0

次のような配列があります。

$user = array();
$user['albert']['email'] = 'an@example.com';
$user['albert']['someId'] = 'foo1';
$user['berta']['email'] = 'another@example.com';
$user['berta']['someId'] = 'bar2';

今、私はどのユーザーが特定のsomeId. この例では、誰が を持っているかを知りsomeId bar2、結果が必要ですberta。これにはまともなphp関数がありますか、それとも自分で作成する必要がありますか?

4

2 に答える 2

2
$id = 'bar2';

$result = array_filter(
  $user,
  function($u) use($id) { return $u['someId'] === $id; }
);

var_dump($result);

注:これは PHP 5.3 以降で動作します。
注 2:現在、以下のバージョンを使用する理由はありません。

于 2013-08-14T12:47:37.780 に答える
0

一致の配列を返すこの関数を試してください。

function search_user($id) {
    $result = new array();
    foreach($user as $name => $user) {
       if ($user['someId'] == 'SOME_ID') {
           $result[] = $user;
       }
    }
    return $result;
}

同じIDを持つユーザーが常に1人いる場合は、1人のユーザーを返すだけで、そうでない場合は例外をスローできます

function search_user($id) {
    $result = new array();
    foreach($user as $name => $user) {
       if ($user['someId'] == 'SOME_ID') {
           $result[] = $user;
       }
    }
    switch (count($result)) {
        case 0: return null;
        case 1: return $result[0];
        default: throw new Exception("More then one user with the same id");
    }
}
于 2013-08-14T12:50:01.870 に答える