2016-05-25 9 views
-1

私は2つの配列を持っています。 $arrayOld$arrayNewとこれらの配列を比較し、$arrayNewにない値のみを選択したいと考えています。PHPは配列を比較します

私は値が$arrayNewにあることは望ましくありません。だから私はarray_diff()が助けになるとは思わない。

$arrayOld = [1, 2, 3, 4, 5] 
$arrayNew = [1, 4, 5, 6, 7] 

だから、それだけで23なく6または7を返す必要があります。

+1

[array_diff](http://php.net/array_diff)? –

+1

'array_diff($ arrayOld、$ arrayNew)'を使用します。 –

+0

array_diff()は私に6と7も与えますか? –

答えて

2

array_diffを使用してください。古い配列からの配列と必要なデータの違いが必要なので、古い配列をarray_diffの最初のパラメータとして使用する必要があります。

注:二番目の配列に存在しない最初の配列からのみ戻り差分アレイ。

$arrayOld = [1, 2, 3, 4, 5]; 
$arrayNew = [1, 4, 5, 6, 7]; 

$n = array_diff($arrayOld, $arrayNew); 

print_r($n); 

結果:あなたは出力配列のための新しいキーを必要とする場合Online Check

Array 
(
    [1] => 2 
    [2] => 3 
) 

がちょうどarray_valuesを使用しています。コードの下0

$arr = array_values($n); 
+0

6と7は結果に含まれないはずです。再度質問を確認してください –

+0

ありがとうございます –

+1

ありがとう。あなたは正しかった。 –

2

使用から新しいスタートキー

$arrayOld = [1, 2, 3, 4, 5]; 
$arrayNew = [1, 4, 5, 6, 7]; 
print "<pre>"; 
print_r(array_diff($arrayOld, $arrayNew)); 

OUTPUT:

Array 
(
[1] => 2 
[2] => 3 
) 
+0

あなたは正しいですよ。私はそれが両方の配列からすべての異なる値を与えるだろうと思った –

-1

使用array_diff機能

$arrayOld = array(1, 2, 3, 4, 5); 
$arrayNew = array(1, 4, 5, 6, 7); 

print_r(array_diff($arrayOld, $arrayNew)); 
+0

質問はすでに答えている:) –

0

はこのコードを使用します。

$arrayOld = array(1, 2, 3, 4, 5); 
$arrayNew = array(1, 4, 5, 6, 7); 

print_r(array_diff($arrayOld, $arrayNew)); 

$compare = array(); 
$i=1; 
foreach($arrayOld as $k=>$v){ 
    if(!in_array($v, $arrayNew)){ 
     $compare[$i] = $v; 
     $i++; 
    } 
} 

$i=$i; 
foreach($arrayNew as $k=>$v){ 
    if(!in_array($v, $arrayOld)){ 
     $compare[$i] = $v; 
     $i++; 
    } 
}