编辑:以下是$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
(
打开括号。
答案 0 :(得分: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);
输出
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));
答案 1 :(得分:2)
<?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;
}
?>
答案 2 :(得分:2)
你很接近,但arrays不这样做。你不能把foreach
放在像这样的数组构造函数中。它应该是这样的:
$outerARR = explode(";", $preparedstring);
$arr = array();
foreach ($outerARR as $arrvalue){
$innerarr = explode(",", $arrvalue);
$arr[] = $innerarr;
}
答案 3 :(得分:0)
$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] =>
)
)