簡體   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