从字符串php构建多维数组

从字符串php构建多维数组,php,Php,编辑:这是$preparedstring的一部分: 琼斯,布莱恩,纽约,10002011-10-21 00:00:00,检查,1542,0,检查,0,检查,;芝加哥克里斯托弗迈勒66666,10002011-10-26 00:00:00,检查,6406,0,检查,0,检查 我正在尝试将HTML表转换为多维数组。我已将表转换为一个长字符串,每个单元格用逗号分隔,每行用分号分隔 我不确定如何从这个字符串构建多维数组。这就是我迄今为止所尝试的: <?php $outerARR = exp

编辑:这是
$preparedstring
的一部分:

琼斯,布莱恩,纽约,10002011-10-21 00:00:00,检查,1542,0,检查,0,检查,;芝加哥克里斯托弗迈勒66666,10002011-10-26 00:00:00,检查,6406,0,检查,0,检查

我正在尝试将HTML表转换为多维数组。我已将表转换为一个长字符串,每个单元格用逗号分隔,每行用分号分隔

我不确定如何从这个字符串构建多维数组。这就是我迄今为止所尝试的:

<?php    
$outerARR = explode(";", $preparedstring);

    $arr = array
    (
    foreach ($outerARR as $arrvalue) {
        $innerarr = explode(",", $arrvalue);
        $innerarr[0]=>array
        (
         $innerarr[];
         )
    }
    );
?>

这给了我一个语法错误

$arr=数组

(


开场白。

遗憾的是,你解决问题的方法是非常错误的,尽管你的问题有很多解决方案,但我会使用下面的方法


代码是如何工作的?

首先,我们使用将字符串分成更小的块,
是分隔符

我们将这个新创建的数组作为第二个参数传递给

接受两个参数,第一个是将为第二个参数(应该是数组)的每个成员调用的函数

在回调函数中,我们再次使用它来拆分值,现在使用
作为分隔符


输出

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));

您很接近,但不要那样工作。您不能将
foreach
放入这样的数组构造函数中。它应该如下所示:

$outerARR = explode(";", $preparedstring);
$arr = array();
foreach ($outerARR as $arrvalue){
   $innerarr = explode(",", $arrvalue);
   $arr[] = $innerarr;
}

演示:

显示一点数据以了解解析内容有很多语法错误,向我们显示
$preparedstring
的内容正确,我将在<5.3版中添加一个片段,说明如何执行此操作
<?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;
}
?>
$outerARR = explode(";", $preparedstring);
$arr = array();
foreach ($outerARR as $arrvalue){
   $innerarr = explode(",", $arrvalue);
   $arr[] = $innerarr;
}
$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] => 
        )

)