在Ruby中,我可以这样做:
fruit = ['banana','apple','tangerine','orange','lemon','lime','kiwi','mango','guava']
citrus = ['orange','lemon','lime','tangerine']
others = fruit - citrus
others
将包含一系列非柑橘类水果。
我如何在PHP中执行此操作?
$fruit = array('banana','apple','tangerine','orange','lemon','lime','kiwi','mango','guava');
$citrus = array('orange','lemon','lime','tangerine');
$others = # NOW WHAT ?????
我是否需要迭代$citrus
中的每个项目并在$fruit
中找到它的偏移量(如果它存在于该数组中)然后取消设置它,然后使用array_values()来修复数组指数?或者是否有更简单,更不容易出错的方式?
请注意:我不正在寻找数组的intersection。我正在寻找complement。这最初是作为询问前者的问题的副本而关闭的。
答案 0 :(得分:6)
是的,有array_diff()
完全相同:
$others = array_diff($fruit, $citrus);
那会让你:
Array
(
[0] => banana
[1] => apple
[6] => kiwi
[7] => mango
[8] => guava
)
这似乎是从其他水果中减去柑橘类水果后的预期剩余量。
答案 1 :(得分:4)
您可以使用array_diff
$fruit = array('banana','apple','tangerine','orange','lemon','lime','kiwi','mango','guava');
$citrus = array('orange','lemon','lime','tangerine');
$others = array_diff($fruit, $citrus);
var_dump($others);
输出
array
0 => string 'banana' (length=6)
1 => string 'apple' (length=5)
6 => string 'kiwi' (length=4)
7 => string 'mango' (length=5)
8 => string 'guava' (length=5)
答案 2 :(得分:1)
您可以使用array_diff()
:
$others = array_merge(array_diff($fruit, $citrus));
您需要使用array_merge来安排索引。查看行动here
$others
将包含以下值:
Array
(
[0] => banana
[1] => apple
[6] => kiwi
[7] => mango
[8] => guava
)
答案 3 :(得分:0)
这可以通过array_intersect和array_diff
来完成$filter1 = "red,green,blue,yellow";
$parts1 = explode(',', $filter1);
$filter2 = "red,green,blue";
$parts2 = explode(',', $filter2);
$result = array_intersect($parts1 , $parts2 );
print_r($result);
和
$result = array_diff($parts1 , $parts2 );
print_r($result);