1. ホーム
  2. php

[解決済み] PHP 多次元配列の値による検索

2022-03-22 11:52:42

質問

を検索したい配列があります。 uid で、その配列のキーを取得します。

使用例

次のような2次元配列があるとします。

$userdb = array(
    array(
        'uid' => '100',
        'name' => 'Sandra Shush',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '5465',
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100'
    ),
    array(
        'uid' => '40489',
        'name' => 'Michael',
        'pic_square' => 'urlof40489'
    )
);

関数呼び出し search_by_uid(100) (最初のユーザーの uid) を返す必要があります。 0 .

関数呼び出し search_by_uid(40489) を返さなければなりません。 2 .

ループを作ったりもしましたが、もっと高速に実行できるコードが欲しいです。

どのように解決するのですか?

function searchForId($id, $array) {
   foreach ($array as $key => $val) {
       if ($val['uid'] === $id) {
           return $key;
       }
   }
   return null;
}

これでうまくいきます。このように呼び出すとよいでしょう。

$id = searchForId('100', $userdb);

を使用する場合は、そのことを知ることが重要です。 === 演算子で比較する型は完全に同じでなければなりません。 string を使用するか、あるいは == の代わりに === .

に基づいています。 アンゴル の答えになります。後のバージョンの PHP では ( >= 5.5.0 ) ワンライナーを使用することができます。

$key = array_search('100', array_column($userdb, 'uid'));

以下はドキュメントです。 http://php.net/manual/en/function.array-column.php .