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