繁体   English   中英

在 2 arrays PHP 中查找两个不同的键是否具有相同的值

[英]Find if two different keys have the same value in 2 arrays PHP

我的 arrays 是:

Array1
(
    [0] => Array
        (
            [id] => 2
            [name] => Melamine
            [deleted] => 0
        )

    [1] => Array
        (
            [id] => 4
            [name] => Vinyl
            [deleted] => 0
        )

    [2] => Array
        (
            [id] => 5
            [name] => Polyu
            [deleted] => 0
        )
)

Array2
(
    [0] => Array
        (
            [productFinish] => 29
            [type] => 2
        )

    [1] => Array
        (
            [productFinish] => 29
            [type] => 4
        )

)

所以,如果第一个数组的id与另一个数组的type匹配,我想返回第一个数组。 在这种情况下,必须返回第一个数组的前 2 个索引。

谢谢

您可以使用array_uintersect来获得您想要的结果,提供一个回调 function 将array1中的id值与array2中的type值进行比较:

$result = array_uintersect($array1, $array2, function ($a1, $a2) { 
    return ($a1['id'] ?? $a1['type']) - ($a2['type'] ?? $a2['id']);
});
print_r($result);

请注意,因为回调也仅使用来自$array1$array2的值(用于排序)调用,所以我们必须在比较表达式中允许它。

Output:

Array
(
    [0] => Array
        (
            [id] => 2
            [name] => Melamine
            [deleted] => 0
        )
    [1] => Array
        (
            [id] => 4
            [name] => Vinyl
            [deleted] => 0
        )
)

3v4l.org 上的演示

好的,我用for循环得到了它。

 $newTypeFilter = [];
    for($i=0; $i < count($arra1); $i++){
        for($j=0;$j<count($arra2); $j++){
            if($arra1[$i]['id'] == $arra2[$j]['type']){
               $newTypeFilter[] = $arra1[$i];
            }
        }
    }

任何其他答案将不胜感激。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM