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