2017-04-06 8 views
0

$ age = array( "Peter" => "35"、 "Ben" => "37"、 "Joe" => "43");$ age2 = array( "Peter" => "Peter"、 "Ben" => "Ben");PHP配列diff

出力は次のようになります。 $ age = array( "Peter" => "35"、 "Ben" => "37"); // Joeと同じインデックスを使用しない

+0

あなたは何をしようとしているのか分かりませんが、$ age2配列は実際には見えません。 Joeを配列から削除したい場合は[unset()](http://php.net/manual/en/function.unset.php) – FrenchMajesty

+0

Joeの削除は$ age2配列に存在しないため、それを単純化しようとしましたが、実際のデータはより複雑です。 – user1143217

答えて

0

$ age1と$ age2を比較し、$ age1から$ age2にないエントリを削除しますか?以下のようなarray_diff_key()を使用しそう:

$missingElements = array_diff_key($age2, $age1); 

foreach($missingElements as $element) { // For each element NOT in both arrays 
    $index = $age1.indexOf($element); 

    unset($age1[$index]); 
} 

var_dump($age1); // Print on screen 

このPHP関数は、キー 2の配列を比較し、その差を返します。したがって、関数によって返された各要素をループし、$ age1からそれらを削除します。

+0

いいですね、それがインデックスではない値ならば?私はちょうどarray_diffを使用できますか? – user1143217

+0

@ user1143217はい、あなたはあなたが私に与えたものから2つのキーの間の唯一の同時の値を得ることができます。そのためにそれらを比較しますが、同じスクリプトを使用して配列を値で比較することができます。 – FrenchMajesty

+0

なぜ私は得ている:解析エラー:構文エラー、予期しない 'unset'(T_UNSET)?? – user1143217