簡體   English   中英

從字符串php構建多維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM