2017-04-07 58 views
0

我想比較兩個不同數組中的字符串並輸出兩個數組之間的差異數。我究竟做錯了什麼?謝謝!PHP ---比較數組以輸出差異數

<?php 
$names = ['Tina', 'Dana', 'Mike', 'Amy', 'Adam']; 

$compare = ['Tina', 'Dean', 'Mel', 'Amy', 'Michael']; 

function outputDifferences($array1, $array2){ 

    $pushedArray = []; 

    $result = array_diff($array1, $array2); 

    // loop through the array 
    for($i = 0; $i < count($result[$i]) -1; $i++){ 

     array_push($pushedArray, $result[$i]); 

     $outcome = count($pushedArray); 
    } 

    return $outcome; 
    var_dump($outcome); 
} 
outputDifferences($names, $compare); 
+2

誰說你做錯了什麼?我們無法知道,因爲您沒有告訴我們您獲得的產出或您期望的產出。 – miken32

回答

0

您在代碼中證明您熟悉count()函數。爲什麼不使用它來返回你正在尋找的號碼?

<?php 
function outputDifferences($array1, $array2){ 
    $result = array_diff($array1, $array2); 
    return count($result); 
} 

$names = ['Tina', 'Dana', 'Mike', 'Amy', 'Adam'];  
$compare = ['Tina', 'Dean', 'Mel', 'Amy', 'Michael']; 
echo outputDifferences($names, $compare); 

至於爲什麼你原來的代碼不工作,爲array_diff()的文件說,「返回array1中不存在任何其他陣列的價值」,這包括他們的鑰匙。在你的例子中,元素0在兩個數組中都是相同的,所以沒有元素0.你的for循環肯定會失敗。使用foreach循環來循環稀疏(即非連續)數組。

+0

謝謝你。是的,我剛剛看到你的評論之前就明白了。我很感激。我沒有意識到array_diff()以數組的形式返回。 – ringside

+0

無需感謝,只需** upvote ** _任何答案,你發現有幫助,並**標記接受** _one answer_最好的回答你的問題!這標誌着這個問題「關閉」,並會給你聲望點。請參閱http://stackoverflow.com/help/someone-answers – miken32