在PHP中删除for循环中的某些数组元素
我已经将从mySQL查询的一些元素(水果名称)插入到一个数组中。现在,我想从数组中删除某些项。如果阵列中存在“Apple”和“Orange”,我想删除它们。这是我尝试过的,但我收到一条错误消息在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]);
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]);
}
}