特定のキーに対して重複値が見つかった場合、多次元配列から子配列を削除したいと考えています。 answer(s) hereはまったく動作しませんでした。しかし、大量の配列の場合はanswer hereが動作しますが、かなり遅くなります。よりクリーンで高速なソリューションを探してください。Aキーの値が重複している場合に子配列を削除する
例PHPアレイ$args = array();
$args[] = array(
'section' => array(
'id' => 'section1',
'name' => 'Section 1',
),
'name' => 'Shortcode Name',
'action' => 'shortcodeaction',
'icon' => 'codeicon',
'image' => 'codeimage',
);
$args[] = array(
'section' => array(
'id' => 'section2',
'name' => 'Section 2',
),
'name' => 'Shortcode2 Name',
'action' => 'shortcodeaction2',
'icon' => 'codeicon2',
'image' => 'codeimage2',
);
$args[] = array(
'section' => array(
'id' => 'section3',
'name' => 'Section 3',
),
'name' => 'Shortcode3 Name',
'action' => 'shortcodeaction3',
'icon' => 'codeicon3',
'image' => 'codeimage3',
);
$args[] = array(
'section' => array(
'id' => 'section1',
'name' => 'Section 4',
),
'name' => 'Shortcode4 Name',
'action' => 'shortcodeaction4',
'icon' => 'codeicon4',
'image' => 'codeimage4',
);
$args[] = array(
'section' => array(
'id' => 'section5',
'name' => 'Section 5',
),
'name' => 'Shortcode5 Name',
'action' => 'shortcodeaction5',
'icon' => 'codeicon5',
'image' => 'codeimage5',
);
$sections = array();
foreach ($args as $arg) {
$sections[] = $arg['section'];
}
そして、print_r($sections)
結果。
Array
(
[0] => Array
(
[id] => section1
[name] => Section 1
)
[1] => Array
(
[id] => section2
[name] => Section 2
)
[2] => Array
(
[id] => section3
[name] => Section 3
)
[3] => Array
(
[id] => section1
[name] => Section 4
)
[4] => Array
(
[id] => section5
[name] => Section 5
)
)
両方Array[0]
とArray[3]
キーid
に対して同じ値を有し、その全体Array[3]
は、重複を避けるために、私の場合に除去されなければなりません。
これは私のために働いていますが、100s以上の配列がある場合は非常に遅くなります。
$knownIds = array();
foreach($sections AS $key=>$item) {
if(array_key_exists($item['id'], $knownIds) === true) {
unset($sections[$key]);
} else {
$knownIds[$item['id']] = $key;
}
}
$sections = array_values($sections);
はこちら(thisを含む)のStackOverflowでいくつかの答えを試みたが、それらのどれも私の場合には役立っていません。
おかげ
あなたがarray_column
と
array_filter
使用して全体を変更することができ
可能な重複[多次元から重複する値を削除する方法PHPの配列](http://stackoverflow.com/questions/307674/how-to-remove-duplicate-values-from-a-multi-dimensional-array-in-php) – Epodax