J'ai deux tableaux de taille différente mais avec le même nom d'élément. et je veux comparer ces deux tableaux pour trouver un élément différent.
'name'=>'Kelly','sex'=>'female','grade'=>'10'
Je veux trouver l'élément différent entre ces deux tableaux et imprimer le résultat.
je veux une sortie comme ça
$arr_1=array(array('name'=>'john','sex'=>'male','grade'=>'9'),array('name'=>'Smith','sex'=>'male','grade'=>'11')); $arr_2=array(array('name'=>'john','sex'=>'male','grade'=>'9'),array('name'=>'Smith','sex'=>'male','grade'=>'11'),array('name'=>'Kelly','sex'=>'female','grade'=>'10'));
3 Réponses :
Vous pouvez utiliser la fonction php array_diff ()
.
Comme vous avez nasté un tableau, vous pouvez utiliser comme ceci . p >
Conversion de tableau à chaîne
Attendez que vous ayez besoin de votre sortie comme un tableau ou une chaîne?
je veux une sortie sous forme de tableau
Utilisez array_udiff au lieu de array_diff , vérifiez les démo
$arr_1=array(array('name'=>'john','sex'=>'male','grade'=>'9'),array('name'=>'Smith','sex'=>'male','grade'=>'11')); $arr_2=array(array('name'=>'john','sex'=>'male','grade'=>'9'),array('name'=>'Smith','sex'=>'male','grade'=>'11'),array('name'=>'Kelly','sex'=>'female','grade'=>'10')); function udiff($a, $b) { return ($name_diff = strcmp($a["name"],$b["name"])) ? $name_diff : (($sex_diff = strcmp($a["sex"],$b["sex"])) ? $sex_diff : (strcmp($a["grade"],$b["grade"]))); } $arrdiff = array_udiff($arr_2, $arr_1, 'udiff'); print_r($arrdiff);
Une autre façon de le faire en utilisant array_diff et array_map .
<?php $arr_1=array(array('name'=>'john','sex'=>'male','grade'=>'9'),array('name'=>'Smith','sex'=>'male','grade'=>'11')); $arr_2=array(array('name'=>'john','sex'=>'male','grade'=>'9'),array('name'=>'Smith','sex'=>'male','grade'=>'11'),array('name'=>'Kelly','sex'=>'female','grade'=>'10')); $c1 = array_map("customImplode",$arr_1); $c2 = array_map("customImplode",$arr_2); function customImplode($data){ return implode("|",$data); } function customExplode($data){ return explode("|",$data); } $result = array_map("customExplode",array_unique(array_merge(array_diff($c1,$c2),array_diff($c2,$c1)))); echo "<pre>"; print_r($result);
Démo: https://3v4l.org/ULtdp
Notez que la comparaison ici est sensible à la casse.
Quel est le résultat attendu?
@ vivek_23 je viens de mettre à jour ma question que je veux montrer comme ça