我对数组减法有小的问题。我认为它很简单,但今天我无法弄清楚。
我有两个数组:
第一位:$ 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减去后将为空。) 我试图这样做,但是没有成功。 怎么办?
谢谢
答案 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()