我有一个关联数组:
array(
'0' => array(
'id' => 1,
'name' => 'one'
),
'1' => array(
'id' => 4,
'name' => 'two'
),
'2' => array(
'id' => 8,
'name' => 'three'
)
);
我想要从item
。
id = 4
期望的输出:
array(
'0' => array(
'id' => 1,
'name' => 'one'
),
'1' => array(
'id' => 8,
'name' => 'three'
)
);
问题:我应该使用哪个函数来查找该元素并将其从数组中删除?
答案 0 :(得分:5)
只需滚动数组,然后根据密钥unset
项目。
$test_array = array(
'0' => array(
'id' => 1,
'name' => 'one'
),
'1' => array(
'id' => 4,
'name' => 'two'
),
'2' => array(
'id' => 8,
'name' => 'three'
)
);
foreach ($test_array as $test_key => $test_value) {
if ($test_value['id'] == 4) {
unset($test_array[$test_key]);
}
}
echo '<pre>';
print_r($test_array);
echo '</pre>';
输出结果为:
Array
(
[0] => Array
(
[id] => 1
[name] => one
)
[2] => Array
(
[id] => 8
[name] => three
)
)
编辑刚刚注意到您对该问题的编辑,该问题显示了确保新数组中没有间隙的所需输出。如果是这种情况,要重新键入数组以便它们再次顺序排列,只需在我的示例中的foreach
之后使用array_values
:
foreach ($test_array as $test_key => $test_value) {
if ($test_value['id'] == 4) {
unset($test_array[$test_key]);
}
}
$test_array = array_values($test_array);
新输出将是:
Array
(
[0] => Array
(
[id] => 1
[name] => one
)
[1] => Array
(
[id] => 8
[name] => three
)
)
答案 1 :(得分:2)
这会生成数组的副本,而不会产生不需要的元素。
$new = array_filter($old, function($elem){
return $elem['id'] !== 4;
});