正如他们所说,去罗马有很多种方式..
使用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);