首页 > 解决方案 > 仅选择数组 1 中的值并存在于数组 2 中

问题描述

我有两个数组,如下所示,我希望能够选择数组 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"
  }
}

我希望找到一种更优雅的方式来做到这一点。

标签: php

解决方案


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
        )

单击此处进行现场演示。


推荐阅读