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);})
这正是我的意思,谢谢!