Как узнать самый верхний индекс элемента массива?

Есть массив:

$users = [
    [
        'email' => '[email protected]',
        'name' => 'Игнат',
        'password' => '$2y$10$OqvsKHQwr0Wk6FMZDoHo1uHoXd4UdxJG/5UDtUiie00XaxMHrW8ka'
    ],
    [
        'email' => '[email protected]',
        'name' => 'Леночка',
        'password' => '$2y$10$bWtSjUhwgggtxrnJ7rxmIe63ABubHQs0AS0hgnOo41IEdMHkYoSVa'
    ],
    [
        'email' => '[email protected]',
        'name' => 'Руслан',
        'password' => '$2y$10$2OxpEH7narYpkOT1H5cApezuzh10tZEEQ2axgFOaKW.55LxIJBgWW'
    ]
];

Как например узнать какой индекс у элемента со значением email: "[email protected]"


Ответы (3 шт):

Автор решения: rusgeli

Перебираете элементы массива через foreach. Если у очередного элемента e-mail совпадает с искомым - записываете/выводите и обрываете цикл

Что-то типа такого:

foreach ($users as $key => $user) {
    if ($user['email'] === '[email protected]') {
        echo $key;
        break;
    }
}
→ Ссылка
Автор решения: Алексей Шиманский

Можно в одну строку

$key = array_search('[email protected]', array_column($users, 'email'));
echo $key;

Одним циклом быстрее. Но это будет заметно на очень существенном объёме данных.

→ Ссылка
Автор решения: splash58

можно воспользоваться array_filter

$res = array_filter($users, function($x) { return $x['email']=='[email protected]';} );
if($res) {
    echo(key($res));
}
else {
    echo 'Key not found';
}
→ Ссылка