从字符串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] =>
)
)