簡體   English   中英

php array_search查找索引值

[英]php array_search find index value

我有2個數組$userArray$differentArray

問題:我試圖從$userArray找到$userId$differentArray匹配的索引值,以便我可以拉出名字/姓氏

$ userArray的print_r輸出:

    Array
    (
        [0] => Array
            (
                [userId] => ID Object
                    (
                        [_unknown:protected] => 
                        [id_:protected] => 8k6Y4FTrnxKY45XrVkXvVJhL
                    )
                [firstName] => Joe
                [lastName] => Smith
            )

        [2] => Array
            (
                [userId] => ID Object
                    (
                        [_unknown:protected] => 
                        [id_:protected] => pCvR9qvIgGv8WyejcKmRtGD8
                    )
                [firstName] => Sue
                [lastName] => Miller
            )

    )

$ differentArray的print_r輸出:

        Array
    (
            [0] => Array
                    (
                            [date] => 1363800434868
                            [userId] => ID Object
                                    (
                                            [_unknown:protected] => 
                                            [id_:protected] => 8k6Y4FTrnxKY45XrVkXvVJhL
                                    )

                            [someTxt] => aaaa
                    )

            [1] => Array
                    (
                            [date] => 1363800858828
                            [userId] => ID Object
                                    (
                                            [_unknown:protected] => 
                                            [id_:protected] => 8k6Y4FTrnxKY45XrVkXvVJhL
                                    )

                            [someTxt] => cccc
                    )

            [2] => Array
                    (
                            [date] => 1363817564430
                            [userId] => ID Object
                                    (
                                            [_unknown:protected] => 
                                            [id_:protected] => pCvR9qvIgGv8WyejcKmRtGD8
                                    )

                            [someTxt] => ccc
                    )
    )

這是我的嘗試,但它只輸出喬史密斯
* $differentArray的構造方式與$userArray相同

    $i = 0;
    while ($i < count($differentArray)){
        $userId = $differentArray[$i]['userId'];
        $key = array_search( $userId, $userArray );
        $firstName = $userArray[$key]['firstName'];
        $lastName = $userArray[$key]['lastName'];
         $i++;
    }

謝謝。

男人,使用foreach

$i = 0;
while ($i < $total) {
    $userId = $differentArray[$i]['userId'];
    // $key = array_search($userId, $userArray);
    foreach ($userArray as $k => $user) {
        if($user["userId"] == $userId){
            $key = $k;
            break; // avoid useless loop
        }
    }
    $firstName = $userArray[$key]['firstName'];
    $lastName = $userArray[$key]['lastName'];
    $i++;
}

我不確定那個ID對象是什么,但我認為它有一個返回id屬性的__toString方法。

$output = array();
foreach ($differentArray as $user) {
    foreach ($userArray as $searchedUser) {
        if ($searchedUser['userId'] == $user['userId']) {
            $output[] = $searchedUser;
        }
    }
}

這將把你正在尋找的用戶放在$ output數組中。 這樣你就不再需要索引了。 您可以迭代$ output以將值拉出到變量。 例如。

foreach ($output as $user) {
    list($userId, $firstName, $lastName) = $user;
    // do your code here
}

如果您確定$ userArray中只能有一個匹配,那么當您找到它或從$ output數組中拉出第一個匹配時,您可以從循環中突破。

我做了很多猜測,因為你沒有提供$ differentArray結構,也沒有指明你實際期望的是什么。

暫無
暫無

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

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