Je le tableau multidimensionnel suivant:Comment supprimer le résultat `null` lors de l'utilisation de array_unique?
$subregion = [
[
"subregion_id" => "8",
"subregion_name" => "NORTH_AMERICA",
"subregion_abbr" => "US"
],
[
"subregion_id" => "9",
"subregion_name" => "NORTH_AMERICA",
"subregion_abbr" => "CA"
],
[
"subregion_id" => "6",
"subregion_name" => "WE",
"subregion_abbr" => "South"
],
[
"subregion_id" => "0",
"subregion_name" => null,
"subregion_abbr" => null
],
[
"subregion_id" => "5",
"subregion_name" => "WE",
"subregion_abbr" => "North"
],
[
"subregion_id" => "0",
"subregion_name" => null,
"subregion_abbr" => null
]
];
Je veux unique tableau par ses valeurs et je dois donc tester les éléments suivants (de this post):
$subregion = array_map("unserialize", array_unique(array_map("serialize", $subregion)));
$subregion = array_intersect_key($subregion, array_unique(array_map('serialize', $subregion)));
$subregion_unique = array_unique($subregion, SORT_REGULAR);
Tous travaillent (essayé un par un) et produit la même sortie:
$subregion = [
[
"subregion_id" => "8",
"subregion_name" => "NORTH_AMERICA",
"subregion_abbr" => "US"
],
[
"subregion_id" => "9",
"subregion_name" => "NORTH_AMERICA",
"subregion_abbr" => "CA"
],
[
"subregion_id" => "6",
"subregion_name" => "WE",
"subregion_abbr" => "South"
],
[
"subregion_id" => "5",
"subregion_name" => "WE",
"subregion_abbr" => "North"
],
[
"subregion_id" => "0",
"subregion_name" => null,
"subregion_abbr" => null
]
];
Je veux me débarrasser des null
valeurs sur l'ar ray parce qu'ils ne devraient pas être là. J'ai donc essayé cette autre solution de contournement (found here):
private function is_not_null($var)
{
return !is_null($var);
}
$unique = array_filter($subregion_unique, 'is_not_null');
Mais surprendre la sortie de $unique
est exactement la même que précédemment, pourquoi? Qu'est-ce qui me manque ici?
NOTE j'ai oublié de mentionner que devrait être compatible avec PHP 5.3.10+
Mise à jour: test1
suivant les instructions de @abracadaver ce que j'ai essayé:
$unique = array_map('unserialize', array_unique(array_map('serialize', $subregion)));
$unique = array_map(function($v) { return array_filter($v, 'is_not_null'); }, $unique);
J'ai changé la fonction is_not_null($var)
ci-dessus pour retourner le résultat de cette façon:
return null !== $var;
Le résultat est un tableau avec des valeurs null
. PS: Peut-être que le titre n'est pas précis et que le post est tenté d'être fermé ou marqué comme doublon, si oui, veuillez me suggérer un meilleur titre ou changer vous-même si vous le pouvez.
'subregion_unique' de $ est? Quoi qu'il en soit, le problème est que vous n'accédez pas correctement à votre tableau '2-Dimensional' dans la fonction' is_not_null' – Aaron
@Aaron la dernière ligne de mon test '$ subregion_unique = array_unique ($ subregion, SORT_REGULAR);' – ReynierPM
à http://stackoverflow.com/questions/27447923/how-to-filter-a-two-dimensional-array-by-value – Aaron