0

在 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() 来修复数组的索引?还是有更简单、更不容易出错的方法?

请注意:不是在寻找数组的交集。我正在寻找一个补充。这最初是作为询问前者的问题的副本而关闭的。

4

4 回答 4

6

是的,有array_diff()一个正是这样做的:

 $others = array_diff($fruit, $citrus);

这会给你留下:

Array
(
    [0] => banana
    [1] => apple
    [6] => kiwi
    [7] => mango
    [8] => guava
)

这似乎是从其他水果中减去柑橘类水果后的预期余数。

于 2012-10-02T16:35:55.023 回答
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)
于 2012-10-02T16:35:56.330 回答
1

你可以使用array_diff()

 $others = array_merge(array_diff($fruit, $citrus));

您需要使用array_merge来排列索引。在此处查看实际操作

$others将包含以下值:

Array
(
    [0] => banana
    [1] => apple
    [6] => kiwi
    [7] => mango
    [8] => guava
)
于 2012-10-02T16:37:48.590 回答
0

这可以通过 array_intersectarray_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);

现场示例

在此处输入图像描述

于 2012-10-02T16:40:14.477 回答