0

array_mapこの関数を使用して、多次元配列をパターン化された文字列に変換しようとしています。

function array_to_string($array) {
    return implode("&",array_map(function($a){return implode("~",$a);},$array));
}
$arr = array("hello",array("blue","red"),array("one","three","twenty"),"random");
array_to_string($arr);

各配列要素「&」間および各サブ配列要素間(配列の場合)「〜」

出力する必要があります:hello&blue~red&one~three~twenty&random

ただし、これは次の出力を出力します。 (2)マルチアレイの値かどうかを検出するためにWarning: implode(): Invalid arguments passed、内の関数を変更しようとしましたが、出力から、それは不可能だと思いますか?つまり、本質的に、本当の問題は、関数をテストして、それが機能するかどうかを確認する方法だと思います。array_mapis_arrayarray_mapis_array

4

1 に答える 1

2

$a は配列または文字列になる可能性があるため、コールバック関数で確認する必要があります。

function array_to_string($array) {
    return implode("&",
               array_map(function($a) {
                   return is_array($a) ? implode("~",$a) : $a;
               }, $array)
           );
}
于 2012-09-07T04:21:34.790 に答える