gpt4 book ai didi

PHP:使用if语句从数组中取消设置

转载 作者:可可西里 更新时间:2023-11-01 12:23:01 25 4
gpt4 key购买 nike

我正在尝试使用 if 语句取消设置特定值。我的代码是

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

for ($i = 0 ; $i < count($fruits); $i++){
if ($fruits[$i] == 'apple' || $fruits[$i] == 'orange' || $fruits[$i] == 'melon' || $fruits[$i] == 'banana'){
unset($fruits[$i]);
}
}
print_r($fruits);

我期待它回来

Array
(
[4] => pineapple
)

但是结果是

Array
(
[3] => banana
[4] => pineapple
)

为什么 'banana' 没有从数组中取消设置?

最佳答案

正如他们所说,有很多方法可以去罗马。

使用foreach()

更简洁的方法是使用 foreach 而不是 for 循环,并使用 in_array() 检查数组而不是单独检查所有的水果。

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

foreach ($fruits as $key=>$fruit) {
if (in_array($fruit, ['apple', 'orange', 'melon', 'banana'])) {
unset($fruits[$key]);
}
}
print_r($fruits);

使用array_filter()

一种更“花哨”的方式是使用 array_filter() 的单行代码,

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

$fruits = array_filter($fruits, function($fruit) {
return !in_array($fruit, ['apple', 'orange', 'melon', 'banana']);
});
print_r($fruits);

使用array_diff()

更简单的方法是使用 array_diff(),它会查找仅存在于一个数组中的所有元素(基本上删除重复项)。

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];
$remove = ['apple', 'orange', 'melon', 'banana'];
$result = array_diff($fruits, $remove);

使用array_intersect()

还有 array_intersect,这是 array_diff() 的逆运算。这将找到存在于两个数组中的元素,并返回它。

$fruits = ['apple', 'orange', 'melon', 'banana', 'pineapple'];
$find = ['pineapple'];
$result = array_intersect($fruits, $find);

关于PHP:使用if语句从数组中取消设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55136018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com