![](/img/trans.png)
[英]How to remove an array from a Multidimensional array by key if condition is met Php
[英]PHP how to remove key from multidimensional array?
我想從 PHP 數組中刪除鍵 1。 我知道如何通過使用 foreach 循環來實現這一點,但我想要array_filter
解決方案。 任何人都知道如何通過使用數組過濾器方法來實現這一點?
PHP數組:
Array (
[0] => Array
(
[0] => 5000
[1] => 25
[2] => 44
)
[1] => Array
(
[0] => 5000
[1] => 25
[2] => 48
)
[2] => Array
(
[0] => 5000
[1] => 26
[2] => 44
)
[3] => Array
(
[0] => 5000
[1] => 26
[2] => 48
)
)
預期結果:
Array
(
[0] => Array
(
[0] => 5000
[1] => 44
)
[1] => Array
(
[0] => 5000
[1] => 48
)
[2] => Array
(
[0] => 5000
[1] => 44
)
[3] => Array
(
[0] => 5000
[1] => 48
)
)
您不能為此目的使用array_filter()
。 改用array_reduce()
$newArr = array_reduce($array, function($carry, $item){
$carry[] = [$item[0], $item[2]];
return $carry;
});
在演示中檢查結果
您不能為此使用array_filter
。 array_filter
處理值,但您想刪除特定鍵。
使用array_splice()
刪除索引並調整所有后續增量。
foreach ($array as &$element) {
array_splice($element, 1, 1);
}
&
使其成為引用變量,因此修改變量會影響數組中的元素。
如果處理索引數組數組,@Barmar 的迭代array_splice()
調用是理想的,因為它們在刪除目標鍵后重新索引子數組。 這是他的答案的功能和動態變化。
(兩個演示)
$array = [
[5000, 25, 44],
[5000, 25, 48],
[5000, 26, 44],
[5000, 26, 48],
];
$omitKey = 1;
var_export(
array_map(
function($row) use($omitKey) {
array_splice($row, $omitKey, 1);
return $row;
},
$array
)
);
如果您有一組關聯數組(未索引),則array_splice()
不是正確的工具,因為它依賴於位置,而不是鍵。 請改用unset()
。
$array = [
['a' => 5000, 'b' => 25, 'c' => 44],
['a' => 5000, 'b' => 25, 'c' => 48],
['a' => 5000, 'b' => 26, 'c' => 44],
['a' => 5000, 'b' => 26, 'c' => 48],
];
$omitKey = 'b';
var_export(
array_map(
function($row) use($omitKey) {
unset($row[$omitKey]);
return $row;
},
$array
)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.