【问题标题】:Select ONLY values in array 1 and exist in array 2 [duplicate]仅选择数组1中的值并存在于数组2中[重复]
【发布时间】:2020-06-24 18:09:35
【问题描述】:

我有两个数组,如下所示,我希望能够在数组 1 中选择 ONLY 值并存在于数组 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


【解决方案1】:

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

Click for more info

<?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
        )

Click here for live demo.

【讨论】:

  • 谢谢。我很欣赏它有一个现场演示,我可以看到实际的输出
  • @OyedeleFemi 没问题,如果对您有帮助,请为答案投票并标记复选标记。 :) 顺便提一个相关问题:stackoverflow.com/questions/5653241/…
猜你喜欢
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2016-10-28
相关资源
最近更新 更多