0

配列があるとしましょう

$array = array(
            'username' => "username",
            'location' => "location",
            'other' => "other");

この配列は多くのユーザーのデータを保持できるため、「username」、「location」、および「other」フィールドごとに異なる値が存在する可能性があります。in_array() または別の関数を使用して、特定のユーザー名が配列に既に存在するかどうかを判断するにはどうすればよいですか? ユーザーが「nyc」のようなユーザー名と「nyc」の場所を持っていて、私がそうする場合

in_array("nyc", $array);

このようなものにどのようにアプローチする必要がありますか?

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

4

2 に答える 2

2

あなたが望むものを実現するために、同じキーを持つ連想配列の配列を作成できます。

<?php
// This syntax will work only on PHP 5.4
$a=[["name"=>"john","age"=>25],["name"=>"philip","age"=>110]];
print_r(array_filter($a, function($item) {return $item["name"] === "john"; }));
?>

出力:

Array
(
    [0] => Array
        (
            [name] => john
            [age] => 25
        )

)

John という名前の人がリストに含まれているかどうかだけを知りたい場合は、返された配列で sizeof/count を使用できます。

これにより、任意の数の複製が可能になり、キーを指定する必要がなくなります。関数を確認してください: array_filter、array_reduce、array_map。これらすべてを使用すると、上記の例のようにクロージャーを使用してリストを処理できます。

配列で連想配列を使用する代わりに、オブジェクトを使用することもできます。オブジェクトはより重量があり、初期化などが必要なため、小さな静的 (ハードコードされた) リストに使用するのはグロテスクです。ただし、データ構造が大きくなり、すべてのリスト項目に特定のプロパティがあることを確認したい場合に便利です (クラスのコンストラクターは、すべてが初期化されるようにすることができます)。しかし良いことは、filter、reduce、map が引き続き機能することです。「$item」がオブジェクトになります。

于 2012-09-29T22:06:04.517 に答える
0
 $users = array( 'user_id' => array('username' => "username",
                                    'location' => "location",
                                    'other' => "other");

user_id は NUMBER user_id です

次に、$users['####']['username']; を呼び出します。

いいえ:

 $users = array( '1' => array('username' => 'Jim',
                              'location' => 'Florida',
                               'other' => "other"),
                 '2' => array('username' => 'Jane',
                              'location' => 'Maryland',
                               'other' => "Grapes"));

次に、array_keys() を使用して user_id を検索します

于 2012-09-29T22:02:33.647 に答える