2015-04-22 115 views
2

我試圖合併兩個配套陣列分揀結果以及在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));   
    } 
} 
+0

切片是否可能爲空? – Liron

回答

1

我認爲錯誤消息可能是誤導性的,實際的問題是在你array_merge(array_slice(...之前調用array_merge

$a[0]$b[0]的值不是數組。

+0

謝謝你,這就是你在說的。現在我還有其他問題,但是這個問題已經解決了。 – wti

+0

@wti如果答案解決了您的問題,請將其標記爲「接受的答案」 – felipsmartins