2017-04-07 9 views
0

私は2つの異なる配列の文字列を比較し、両方の配列の差の数を出力しようとしています。私は間違って何をしていますか?ありがとう!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()のドキュメントは、それが「他の配列のいずれにも存在しない配列1の値を返します」と、これは彼らのキーを含んでいると言います。あなたの例では、要素0は両方の配列で同じなので、要素0はありません。あなたのforループは失敗するようにバインドされています。スパース(すなわち非連続)配列をループするには、foreachループを使用します。

+0

ありがとうございます。うん、私はあなたのコメントを見る前にそれを分かった。それは有り難いです。 array_diff()が配列として返されたことに気づいていませんでした。 – ringside

+0

ありがとうございました、ちょうど** upvote ** _any answers_あなたが役立って、**マークが受け入れられました** _one答え_あなたの質問に最もよく答えました!これは「閉鎖された」と表示され、評判のポイントが与えられます。 http://stackoverflow.com/help/someone-answersを参照してください。 – miken32

関連する問題