减去具有一个共同的key-> value的数组条目

时间:2018-08-28 14:01:55

标签: php arrays

我对数组减法有小的问题。我认为它很简单,但今天我无法弄清楚。

我有两个数组:

第一位:$ freeUsers

array(1) {
[0]=>
object(stdClass)#122 (7) {
["is_on_job"]=>
int(0)
["user_id"]=>
int(28)
["first_name"]=>
string(4) "John"
["last_name"]=>
string(5) "Johna"
["phone"]=>
string(12) "+17279028012"
["distance"]=>
float(3.4272831099407)
["pickup_status"]=>
string(4) "done"
}

第二个$ busyUsers

array(2) {
[0]=>
object(stdClass)#123 (7) {
["is_on_job"]=>
int(1)
["user_id"]=>
int(28)
["first_name"]=>
string(4) "John"
["last_name"]=>
string(5) "Johna"
["phone"]=>
string(12) "+122222222"
["distance"]=>
float(3.4272831099407)
["pickup_status"]=>
string(4) "picked_up"
},
{
[1]=>
object(stdClass)#115 (7) {
["is_on_job"]=>
int(1)
["user_id"]=>
int(3)
["first_name"]=>
string(4) "Eva"
["last_name"]=>
string(5) "Gross"
["phone"]=>
string(12) "+1711111111"
["distance"]=>
float(3.4272831099407)
["pickup_status"]=>
string(4) "picked_up"
}

现在我必须从$ freeUsers数组中减去$ busyUsers中所有user_id相同的条目。 (在这种情况下,$ freeUsers减去后将为空。) 我试图这样做,但是没有成功。 怎么办?

谢谢

2 个答案:

答案 0 :(得分:1)

如果您使用的是PHP 7+,则可以使用array_column(),它在添加对对象的支持时作为输入。这可以用来通过user_id为两个数组建立索引,然后使用array_diff_key()来获得区别...

$result = array_diff_key(array_column($freeUsers, null, "user_id"), 
    array_column($busyUsers, null, "user_id"));

答案 1 :(得分:0)

正如@TomLankhorst所建议的那样,array_filter也会很好,因为您的$ busyUsers拥有一个对象数组,如果它们位于数组中,而不是auxArray,我们可以使用{{1 }}

http://php.net/manual/en/function.array-filter.php

array_column()