2016-05-25 1 views
-1

J'ai deux tableaux. $arrayOld et $arrayNew et je veux comparer ces tableaux et ne sélectionnez que les valeurs qui ne sont pas $arrayNew.Tableaux de comparaison PHP

Je ne veux pas les valeurs qui sont dans $arrayNew seulement. Donc, je ne pense pas que array_diff() va m'aider.

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

donc il a besoin pour revenir 2 et 3 et non 6 ou 7.

+1

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

+1

Utilisez 'array_diff ($ arrayOld, $ arrayNew)' –

+0

array_diff() me donnera 6 et 7 aussi droit? –

Répondre

2

utilisez array_diff, pour ce faire. Comme vous avez besoin d'une différence entre le tableau et les données de l'ancien tableau, vous devez utiliser l'ancien tableau comme premier paramètre de array_diff.

Note: tableau diff que les rendements de la première rangée qui ne sont pas dans le deuxième tableau.

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

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

print_r($n); 

Résultat:Online Check

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

Si vous avez besoin de nouvelles clés pour le tableau de sortie il suffit d'utiliser array_values. Le nouveau départ de clé 0.

$arr = array_values($n); 
+0

6 et 7 ne devrait pas entrer dans les résultats, vérifiez à nouveau la question –

+0

Merci pour l'information –

+1

Merci. Tu avais raison. –

2

Utilisez le code ci-dessous

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

SORTIE:

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

Oh, vous avez raison. J'ai pensé qu'il donnera toutes les différentes valeurs des deux tableaux –

-1

utilisation array_diff fonction

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

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

La question a déjà été répondue :) –

0

utilise ce code.

$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++; 
    } 
}