私は、次の多次元配列があります。array_uniqueを使用しているときに `null`の結果を削除するには?
$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
]
];
私はユニークにその値によってその配列をしたいので、私は(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);
それらのすべての作業(1を試してみましたが1)によると、同じ出力生成します。私は、ARにnull
値を取り除きたい
$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
]
];
を彼らはそこにいてはならないからです。だから私は、この他の回避策(found here)を試してみました:
private function is_not_null($var)
{
return !is_null($var);
}
$unique = array_filter($subregion_unique, 'is_not_null');
しかし$unique
の出力を驚かは、なぜ、以前とまったく同じですか?私はここで何が欠けているのですか?これは私が試したものですtest1の
後@abracadaver命令:
$unique = array_map('unserialize', array_unique(array_map('serialize', $subregion)));
$unique = array_map(function($v) { return array_filter($v, 'is_not_null'); }, $unique);
NOTEは、私はPHPで5.3.10+
アップデート適合するものでなければならない言及するのを忘れてしまいました
私は、このように結果を返すために、上記の機能is_not_null($var)
を変更しました:
return null !== $var;
結果はnull
値を持つ配列です。
PS:たぶんタイトルは正確ではなく、ポストを閉じたりすることができますので、もしご自分で私に優れたタイトルや変更を提案してください場合は、重複としてマークされるように誘惑されます。
'$のsubregion_unique'がありますか?とにかく問題は、 'is_not_null'関数で' 2-Dimensional array'に正しくアクセスしていないことです。 – Aaron
@Aaron my testの最後の行 '$ subregion_unique = array_unique($ subregion、SORT_REGULAR);' – ReynierPM
@stackoverflow.com/questions/27447923/how-to-filter-a-two-dimensional-array-by-value – Aaron