Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中删除for循环中的某些数组元素_Php_Arrays_For Loop - Fatal编程技术网

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

在PHP中删除for循环中的某些数组元素,php,arrays,for-loop,Php,Arrays,For Loop,我已经将从mySQL查询的一些元素(水果名称)插入到一个数组中。现在,我想从数组中删除某些项。如果阵列中存在“Apple”和“Orange”,我想删除它们。这是我尝试过的,但我收到一条错误消息 Array Example: Array ( [1] => Orange [2] => Apple) foreach($terms as $k => $v) { if (key($v) == "Apple") { unset($terms[$k]);

我已经将从mySQL查询的一些元素(水果名称)插入到一个数组中。现在,我想从数组中删除某些项。如果阵列中存在“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
我在这里提到了这个链接: 如果有人能指出我做错了什么,我将不胜感激

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

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

代码。。。 使用
array_diff()

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

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

代码。。。 使用
array_diff()

您是否尝试过这种方法:

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

}

您是否尝试过这种方式:

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

}

或者你可以直接使用
array\u diff($fr,$rm)
@AmalMurali,没错。@ShankarDamodaran谢谢!很高兴知道我能做到这一点,是的,这会有所帮助。我2天前刚开始学习php,还有很多东西要学。@Cryssie,我们很高兴能帮助你:)@Cryssie,与其每次都检查,不如将它们存储在一个数组中,并利用可用的强大数组函数,你也可以使用相同的函数来减少代码。或者你可以只使用
array\u diff($fr,$rm)
@AmalMurali,没错。@ShankarDamodaran谢谢!很高兴知道我能做到这一点,是的,这会有所帮助。我2天前刚开始学习php,还有很多东西要学。@Cryssie,我们很高兴帮助你:)@Cryssie,与其每次都检查,不如将它们存储在数组中,并利用可用的强大数组函数,还可以使用相同的函数来减少代码。
key()
不是这样工作的。如果您只是试图访问数组的键,只需使用
foreach
构造提供的
$k
。在这种情况下,数组是非关联的,因此关键帧是数字的,因此无法工作。解决方案是要么将数组更改为关联数组(例如:
$arr=['foo'=>'hello','bar'=>'howdy'];
),要么像这样更改比较:
如果($v=='SomeValue'){/*do stuff*/}
@AmalMurali感谢您的解释。不久前我刚开始学习php,现在还在学习示例。
key()
不是这样工作的。如果您只是试图访问数组的键,只需使用
foreach
构造提供的
$k
。在这种情况下,数组是非关联的,因此关键帧是数字的,因此无法工作。解决方案是要么将数组更改为关联数组(例如:
$arr=['foo'=>'hello','bar'=>'howdy'];
),要么像这样更改比较:
如果($v=='SomeValue'){/*do stuff*/}
@AmalMurali感谢您的解释。不久前我刚开始学习php,还在学习示例。虽然所选答案在结构上更合理,但这是突出显示foreach循环($v)中实际当前值的好答案,而所选答案在结构上更合理,这是突出显示foreach循环($v)中实际当前值的好答案
print_r(array_diff($fr,$rm));
foreach($terms as $k => $v) 
{ 
    if ($v == "Apple") 
    {
        unset($terms[$k]);
    }
    elseif($v == "Orange")
    {
        unset($terms[$k]);
    }

}