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

然而这个输出:Warning: implode(): Invalid arguments passed(2)我尝试改变函数array_map来检测是否多数组的值is_array但是从我的输出中,我不认为这是可能的?所以本质上,我想真正的问题是如何对array_map函数进行测试以查看它是否is_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 回答