我有像这样的php数组
Array
(
[0] => WVSE1P
[1] => WVSE1MA
[2] => WVSEU1Y
[3] => WVSEUP
)
如何通过传递值来删除其中的特定条目?
下面是我试过的代码:
$array = $items; //array is items
foreach($array as $key => $value)
{
$val= 'WVSE1P'; //item to remove
if ($value == $val) unset($array[$key]);
}
但它似乎不起作用。
答案 0 :(得分:7)
您应该使用array_splice
而不是取消设置,以便在取消设置后正确匹配数组索引。
这个怎么样?:
$val = 'WVSE1P';
$items = array_splice($items, array_search($val), 1);
答案 1 :(得分:3)
此方法删除指定数组中的任何值而不进行任何循环:示例:
$array = Array("blue", "orange", "red");
$array = array_diff($array, array("blue")); // blue will be removed
//optionally you can realign the elements:
$array = array_values($array);
你的原因可能不起作用是因为你把它包含在一个不控制数组对象的循环中。
答案 2 :(得分:1)
在迭代该数组时取消设置数组项可能会导致某些意外行为。这是另一个解决方案:
$flipped = array_flip($array);
unset($flipped['WVSE1P']);
$array = array_flip($flipped);
这应该适用于这种情况。只需确保所有值在数组中都是唯一的。