PHP foreach数组赋值


PHP foreach assigning of array

我试图递归地读取到一个数组,直到我得到一个字符串。然后我尝试引爆它并返回新创建的数组。然而,由于某些原因,它没有赋值数组:

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;
}
编辑:

现在,它只编辑包含换行符的字符串。在它编辑每个字符串之前,这意味着每个字符串都以数组的形式返回。