assort合并两个各种数组

时间:2015-04-22 17:29:02

标签: php arrays

我正在尝试合并两个分类数组,并在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:\Web\a\sortArrays.php on line 14

基本上解释器说这里的参数1 array_merge(array_slice($b, 1, count($b)-1), $a));不是和数组,但我在所有元素上都做了print_r,它说它们是数组。我做错了什么?

修改,感谢Sam这是正确的代码:

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));        
    }
}

1 个答案:

答案 0 :(得分:1)

我认为错误消息可能会产生误导,实际问题是在array_merge之前调用array_merge(array_slice(...

$a[0]$b[0]的值不是数组。