0

私は2つの配列$userArrayとを持っています$differentArray

質問:名前が最初/最後の名前を取得できるように、一致する$userArray場所からインデックス値を見つけようとしています$userId$differentArray

print_r$userArrayのはこれを出力します:

    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
            )

    )

print_r$differentArrayのはこれを出力します:

        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
                    )
    )

これが私の試みですが、JoeSmith
*
$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++;
    }

ありがとうございました。

4

2 に答える 2

1

男、使用します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++;
}
于 2013-03-20T23:17:40.590 に答える
1

その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に一致するものが1つしかないことが確実な場合は、ループを見つけたときにループから抜け出すか、$output配列から最初の一致を引き出すことができます。

$differentArray構造体を提供しておらず、実際に何を期待しているのかを指定していないので、私はその答えを多くの推測で投稿しました。

于 2013-03-20T23:18:20.373 に答える