1

文字列を取得するまで、再帰的に配列に読み込もうとしています。次に、それを分解して、新しく作成された配列を返そうとします。ただし、何らかの理由で配列を割り当てません。

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
        )

)
4

3 に答える 3

0

関数で元の配列が返されませんでした:

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;
}

編集:

現在は、改行を含む文字列のみを実際に編集しています。すべての文字列を編集する前は、すべての文字列が配列として返されることを意味していました。

于 2013-04-25T22:53:41.110 に答える
0

ネストされた条件/ループを記述するときは、読みやすくし、バグを防ぐために、常に中かっこを追加してください。また、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);
        }
}
于 2013-04-25T22:35:57.507 に答える