Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 减去包含一个键的数组项->;共同价值_Php_Arrays - Fatal编程技术网

Php 减去包含一个键的数组项->;共同价值

Php 减去包含一个键的数组项->;共同价值,php,arrays,Php,Arrays,我对数组减法有一个小问题。我认为这很简单,但今天我就是搞不懂 我有两个阵列: 第一:免费用户 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) "+172

我对数组减法有一个小问题。我认为这很简单,但今天我就是搞不懂

我有两个阵列:

第一:免费用户

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在减法后将为空。) 我试着那样做,但没有成功。 怎样才能做到呢


谢谢你

正如@TomLankhorst所建议的,数组过滤器会很好,而且,因为你的$busyUsers拥有一个对象数组,我不认为这会更简单,如果他们使用数组,而不是auxArray,我们可以使用
array\u column()

$auxArr=array();
foreach($busyUsers作为$bU){
数组推送($auxArr,$bU->user\u id);
}
数组过滤器($freeUsers,函数($value,$key){
返回数组($value->user\u id,$auxArr);
},数组\过滤器\使用\两者)

如果您使用的是PHP7+,则可以使用,这是当它添加了对对象作为输入的支持时。这可用于按用户id对两个数组进行索引,然后用于获取差异

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

获取忙碌用户id的数组:
$busy_user_id=array_map(函数($u){return$u['user_id'];},$busy_用户)
然后过滤空闲用户数组:
array\u filter($free\u users,function($f)use($busy\u user\u id){return!在数组中($f['user\u id',$busy\u user\u id);})
这正是我的意思,谢谢!