要字符串的多维数组(某些值不是子数组)


Multidimensional Array (with some values not sub-arrays) to string?

我正试图通过以下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

然而,此输出:Warning: implode(): Invalid arguments passed(2)我尝试更改array_map中的函数以检测多数组的值is_array,但从我的输出来看,我认为这不可能?所以本质上,我想真正的问题是如何对array_map函数进行测试,看看它是否是is_array

由于$a可以是数组或字符串,您应该在回调函数中检查它:

function array_to_string($array) {
    return implode("&",
               array_map(function($a) {
                   return is_array($a) ? implode("~",$a) : $a;
               }, $array)
           );
}