[英]build multidimensional array from string php
編輯:這是$preparedstring
的一部分:
555555,Jones,Brian,NYC,1000,2011-10-21 00:00:00,Check,1542,0 ,, Check ,, 0 ,, Check ,,; 6666666,Miler,Christopher,Chicago,1000,2011-10-26 00:00:00,Check,6406,0 ,, Check ,, 0 ,, Check ,,;
我試圖將HTML表轉換為多維數組。 我已將表轉換為長字符串,每個單元格用逗號分隔,每行用分號分隔。
我不確定如何從這個字符串構建多維數組。 這是我到目前為止所嘗試的:
<?php
$outerARR = explode(";", $preparedstring);
$arr = array
(
foreach ($outerARR as $arrvalue) {
$innerarr = explode(",", $arrvalue);
$innerarr[0]=>array
(
$innerarr[];
)
}
);
?>
這給了我附近的語法錯誤
$ arr = array
(
左括號。
你解決這個問題的方法是非常錯誤的,雖然你的問題有很多解決方案,我會使用類似下面的內容。
代碼如何工作?
首先,我們使用explode將字符串拆分成較小的塊;
是我們的分隔符。
我們將這個新創建的數組傳遞給array_map,因為它是第二個參數。
array_map有兩個參數,第一個是為第二個參數的每個成員調用的函數(應該是一個數組)。
在我們對array_map的回調中,我們使用explode再次拆分值,現在使用,
作為我們的分隔符。
$data = "1,2,3;4,5,6;7,8,9";
$ret = array_map (
function ($_) {return explode (',', $_);},
explode (';', $data)
);
print_r ($ret);
產量
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
它不起作用,為什么?
可能是因為您使用的是5.3之前的PHP版本,如果是這樣,您可以使用此代碼段:
function explode_by_comma ($_) {
return explode (',', $_);
}
$ret = array_map ('explode_by_comma', explode (';', $data));
<?php
//explode first dimension of the array to create an array of rows
$outerARR = explode(";", $preparedstring);
$arr = array();
//iterate through the newly created array
foreach ($outerARR as $arrvalue) {
//explode this row into columns
$innerarr = explode(",", $arrvalue);
//add the newly created array of columns to the output array as a new index
$arr[] = $innerarr;
}
?>
你很接近,但陣列不能那樣工作。 你不能把foreach
放在像這樣的數組構造函數中。 它應該如下所示:
$outerARR = explode(";", $preparedstring);
$arr = array();
foreach ($outerARR as $arrvalue){
$innerarr = explode(",", $arrvalue);
$arr[] = $innerarr;
}
演示: http : //codepad.org/I5wFFczR
$outerARR = explode(";", $preparedstring);
$a = array();
$y=0;
foreach ($outerARR as $arrvalue){
$x=0;
$innerarr = explode(",", $arrvalue);
foreach($innerarr as $v){
$a[$y][$x++] = $v;
}
$y++;
}
print_r($a);
Array
(
[0] => Array
(
[0] => 555555
[1] => Jones
[2] => Brian
[3] => NYC
[4] => 1000
[5] => 2011-10-21 00:00:00
[6] => Check
[7] => 1542
[8] => 0
[9] =>
[10] => Check
[11] =>
[12] => 0
[13] =>
[14] => Check
[15] =>
[16] =>
)
[1] => Array
(
[0] => 6666666
[1] => Miler
[2] => Christopher
[3] => Chicago
[4] => 1000
[5] => 2011-10-26 00:00:00
[6] => Check
[7] => 6406
[8] => 0
[9] =>
[10] => Check
[11] =>
[12] => 0
[13] =>
[14] => Check
[15] =>
[16] =>
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.