我试图递归地读取到一个数组,直到我得到一个字符串。然后我尝试引爆它并返回新创建的数组。然而,由于某些原因,它没有赋值数组:
function go_in($arr) { // $arr is a multi-dimensional array
if (is_array($arr))
foreach($arr as & $a)
$a = go_in($a);
else
return explode("'n", $arr);
}
编辑:下面是print_r打印的数组定义:
Array
(
[products] => Array
(
[name] => Arduino Nano Version 3.0 mit ATMEGA328P
[id] => 10005
)
[listings] => Array
(
[category] =>
[title] => This is the first line
This is the second line
[subtitle] => This is the first subtitle
This is the second subtitle
[price] => 24.95
[quantity] =>
[stock] =>
[shipping_method] => Slow and cheap
[condition] => New
[defects] =>
)
[table_count] => 2
[tables] => Array
(
[0] => products
[1] => listings
)
)
我会这样写:
array_walk_recursive($array,function(&$value,$key){
$value = explode("'n",$value);
});
然而,这修复了你的函数:
function &go_in(&$arr) { // $arr is a multi-dimensional array
if (is_array($arr)){
foreach($arr as & $a) $a = go_in($a);
} else {
$arr = explode("'n", $arr);
}
return $arr;
}
在编写嵌套条件/循环时-总是添加大括号以提高可读性并防止错误。您还应该返回go_in
函数,因为它是递归的,它需要传递给调用函数实例。
function go_in($arr) { // $arr is a multi-dimensional array
if (is_array($arr))
{
foreach($arr as &$a)
{
return go_in($a);
}
}
else
{
return ($arr);
}
}
函数中没有返回原始数组:
function go_in($arr) {
if (is_array($arr))
foreach($arr as &$a)
$a = go_in($a);
else
if (strpos($arr, "'n") !== false)
return explode("'n", $arr);
return $arr;
}
编辑:现在,它只编辑包含换行符的字符串。在它编辑每个字符串之前,这意味着每个字符串都以数组的形式返回。