php - 仅选择数组 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"
}
}
我希望找到一种更优雅的方式来做到这一点。
解决方案
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
)
推荐阅读
- c++ - 在 c++ 中将变量定义为浮点类型时,后缀“f”的需要是什么?
- android - 使用 Google 人脸检测 ML 套件在人脸周围绘制一个框到现有照片
- c - Else without a previous If problem in C language in URI Online Judge
- tcp - Lwip 1.4.1 卡在 tcp_fasttmr 中的无限 while 循环
- r - 是否有用于连接到 U2 / Universe / PICK 的 R 包?
- r - R:将函数应用于嵌套列表
- c++ - 0xC0000005:在位置 0xDDDDDDDD 读取时访问冲突。C++
- haskell - 使用 haskell 服务客户端:如何将记录类型编码为 FormUrlEncoded 的正文
- terminal - 如何在 iTerm2 中显示 ANSI 颜色代码与彩色文本?
- python - 在 SymPy 中计算总和