从字符串php构建多维数组

JDV*_*590 2 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[];
         )
    }
    );
?>
Run Code Online (Sandbox Code Playgroud)

这给了我附近的语法错误

$ arr = array

(

左括号.

Fil*_*efp 6

你解决这个问题的方法是非常错误的,虽然你的问题有很多解决方案,我会使用类似下面的内容.


代码如何工作?

首先我们使用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);
Run Code Online (Sandbox Code Playgroud)

产量

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
        )

)
Run Code Online (Sandbox Code Playgroud)

它不起作用,为什么?

可能是因为您使用的是5.3之前的PHP版本,如果是这样,您可以使用此代码段:

function explode_by_comma ($_) {
  return explode (',', $_);
}

$ret = array_map ('explode_by_comma', explode (';', $data));
Run Code Online (Sandbox Code Playgroud)