为了账号安全,请及时绑定邮箱和手机立即绑定

仅选择数组 1 中且存在于数组 2 中的值

仅选择数组 1 中且存在于数组 2 中的值

PHP
HUWWW 2023-07-01 10:11:21
我有两个数组,如下所示,我希望能够仅选择数组 1 中的值并存在于数组 2 中这是我的第一个数组:<pre>array(4) {  [0]=>  array(1) {    ["user_id"]=>    string(1) "1"  }  [1]=>  array(1) {    ["user_id"]=>    string(1) "2"  }  [2]=>  array(1) {    ["user_id"]=>    string(1) "3"  }  [3]=>  array(1) {    ["user_id"]=>    string(1) "4"  }}这是我的第二个数组:<pre>array(5) {  [0]=>  array(1) {    ["user_id"]=>    string(1) "5"  }  [1]=>  array(1) {    ["user_id"]=>    string(1) "1"  }  [2]=>  array(1) {    ["user_id"]=>    string(1) "4"  }  [3]=>  array(1) {    ["user_id"]=>    string(1) "4"  }  [4]=>  array(1) {    ["user_id"]=>    string(1) "5"  }}我希望找到一种更优雅的方式来做到这一点。
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

Oyedele,所以有一个名为 array_interesect 的 PHP 函数,它只会返回参数中存在的值。

<?php

$array1 = array("a" => "green", "red", "blue");

$array2 = array("b" => "green", "yellow", "red");

$result = array_intersect($array1, $array2);

print_r($result);

?>

返回以下内容:


Array

(

    [a] => green

    [0] => red

)

更新: 对于您的情况,您需要使用array_uintersect

这是代码


// Creating your Arrays


$array1 = array(

           array('user_id' => '1'),

           array('user_id' => '2'),

           array('user_id' => '3'),

           array('user_id' => '4'),

        );


$array2 = array(

           array('user_id' => '5'),

           array('user_id' => '1'),

           array('user_id' => '4'),

           array('user_id' => '4'),

           array('user_id' => '5'),

        );


// Preforming comparison


$intersect = array_uintersect($array1, $array2, 'compareDeepValue');

print_r($intersect);


// Custom Comparison Function


function compareDeepValue($val1, $val2)

{

   return strcmp($val1['user_id'], $val2['user_id']);

}

这是输出:


Array

(

    [0] => Array

        (

            [user_id] => 1

        )


    [3] => Array

        (

            [user_id] => 4

        )


查看完整回答
反对 回复 2023-07-01
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信