在PHP中删除for循环中的某些数组元素

时间:2014-04-22 06:16:58

标签: php arrays for-loop

我已经将从mySQL查询的一些元素(水果名称)插入到数组中。现在,我想从数组中删除某些项目。我想删除Apple' Apple'和' Orange'如果存在于数组中。这是我尝试过但我收到错误信息。

Array Example:
Array ( [1] => Orange [2] => Apple)

foreach($terms as $k => $v) 
{
    if (key($v) == "Apple") 
    {
        unset($terms[$k]);
    }
    elseif( key($v) == "Orange")
    {
        unset($terms[$k]);
    }

}


>>> Warning: key() expects parameter 1 to be array, string given //same error repeated 4 times

我在这里提到了这个链接:How do you remove an array element in a foreach loop? 如果有人能指出我做错了什么,我将不胜感激。

2 个答案:

答案 0 :(得分:5)

你有没有尝试过这种方式:

foreach($terms as $k => $v) 
{ 
    if ($v == "Apple") 
    {
        unset($terms[$k]);
    }
    elseif($v == "Orange")
    {
        unset($terms[$k]);
    }

}

答案 1 :(得分:1)

说明:

$fr是您所有水果的实际数组...而您的$rm是另一个数组,其中包含要从$fr数组中删除的项目列表。

foreach数组中使用$rm周期,查看$fr数组中是否存在该元素,如果找到,则unset()

代码......

<?php
$fr = array('Apple','Orange','Pineapple'); //<-- Your actual array
$rm = array('Apple','Orange'); //<--- Elements to be removed 

foreach($rm as $v)
{
    if(in_array($v,$fr))
    {
        unset($fr[array_search($v,$fr)]);
    }
}
print_r($fr);

<强> OUTPUT :

Array
(
    [2] => Pineapple
)

使用array_diff()

print_r(array_diff($fr,$rm));

Code Demonstration