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
。
ループを作成してみましたが、より高速に実行されるコードが必要です。
ベストアンサー1
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。