【问题标题】:Exclude elements of one array from another array从另一个数组中排除一个数组的元素
【发布时间】:2013-05-16 16:03:16
【问题描述】:

我需要从数组$objects 中排除数组$tempobjects 的元素。最快的方法是什么?

$objects = new MyObjects();
$tempobjects = new MyObjects();

for($i=0; $i<10; $i++) {
  $objects->addObject(new MyObject(...));
}

//...fill $tempobjects with some temporary data

$tempobjects = $objects - $tempobjects; // HOW TO DO SOMETHING LIKE THIS?

【问题讨论】:

  • 看起来 $objects 和 $tempObjects 是对象(或包含数据集合的对象)而不是数组
  • array_diffarray_diff_assoc 是对数组执行此操作的常用方法,但正如马克贝克所说,你有对象,所以这些函数可能不起作用。尝试将您的对象转换为数组。
  • @sgroves 你知道如果有问题的两个对象都实现了 ArrayAccess 接口,它是否会起作用?
  • @Anigel,在这种情况下不是数组...也许他需要在为他执行此操作的类上添加一个方法。

标签: php arrays


【解决方案1】:

如果 $tempobjects$objects 是数组(就像您的标题提到的那样),根据您的示例代码,它们不是,您可以使用函数排除元素array_diff()(用于比较值)或 array_diff_key()(用于比较键)。

另请参阅此short demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多