簡體   English   中英

從具有匹配值php的多維數組中獲取特定數組

[英]Fetch specific array from multidimensional array with matching value php

我有2個數組-

$array1 =
Array
(
    [0] => Array
        (
            [user_id] => 2
            [like_status] => 1
        )

    [1] => Array
        (
            [user_id] => 3
            [like_status] => 1
        )

)

$array2 = 

Array
(
    [isLoggedIn] => 1
    [userId] => 3
)

我的要求是我要獲取其中userId = 3的數組。 $array1可以有多個記錄,但是我只想獲取其中userID = 3的數組,即$ array2中的數組

我能夠進入條件並進行匹配,但無法獲取。

if(array_search($array2['userId'], array_column($array1, 'user_id')) !== False) {
                                print_r($array1);
                            }

但是它應該只返回特定的數組。

一種方法是創建用戶ID的平面數組,並使用array_intersect獲取匹配的完整數組。

$userids = array_column($array1, "user_id");
$matching = array_intersect_key($array1, array_intersect($userids, [$array2['user_id']]));

現在,$ matching將是userid與$array2['userId']匹配的所有$array1$array1

array_search($array2['userId'], array_column($array1, 'user_id'))

將返回匹配項的索引;如果沒有匹配項,則返回false 您可以使用此信息從$array1獲取數組。

$index = array_search($array2['userId'], array_column($array1, 'user_id')) !== False);
if($index !== false){
    print_r($array1[$index]);
}

請注意,這假設數組中只有一個匹配的用戶ID-如果有更多的用戶ID,則只會找到第一個。

如果您想在下面喜歡,也可以使用foreach進行此操作

foreach ($array1 as $key => $value) {
    if($value['user_id'] == $array2['userId'])
    {
        echo '<pre>'; print_r($value);echo '</pre>';
        break;
    }
}

輸出:

數組([user_id] => 3 [like_status] => 1)

您可以使用foreach循環來實現

foreach( $array1 as $val ){
  $val['user_id'] == $array2['userId'] ? $result[] = $val : ''; 
}
echo "<pre>"; print_r( $result );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM