我正在尝试合并两个分类数组,在PHP中对结果进行排序,这是我设法想出的代码:
<?php
function assotAssortedArrays($a, $b){
if (empty($a)){
return $b;
}
if (empty($b)){
return $a;
}
if ($a[0] < $b[0]){
return array_merge($a[0],
array_merge(array_slice($a, 1, count($a)-1), $b));
} else {
return array_merge($b[0],
array_merge(array_slice($b, 1, count($b)-1), $a));
}
}
$a = array(1,2,3,4,5);
$b = array(3,4,5,6,7);
var_dump(assotAssortedArrays($a, $b));
代码不起作用,这是我收到的错误:
Warning: array_merge(): Argument #1 is not an array in D:WebasortArrays.php on line 14
基本上解释器说这里的参数 1 array_merge(array_slice($b, 1, count($b)-1), $a));
不是数组,但我对所有元素都做了print_r,它说它们是数组。我做错了什么?
编辑,感谢山姆 这是正确的代码:
function mergeArrays($a, $b){
if (empty($a)){
return $b;
}
if (empty($b)){
return $a;
}
if ($a[0] < $b[0]){
$aux[] = $a[0];
return array_merge($aux, mergeArrays(array_slice($a, 1, count($a)), $b));
} else {
$aux[] = $b[0];
return array_merge($aux, mergeArrays(array_slice($b, 1, count($b)), $a));
}
}
我认为错误消息可能具有误导性,实际问题在于在array_merge(array_slice(...
之前调用array_merge
。
$a[0]
和 $b[0]
的值不是数组。