Сравнение значения ключа в json с данными на входе

В общем на вход получаю логин пользователя, нужно сравнить $INlogin с ключом login, если совпадение нашлось, то вывести массив значений данного пользователя и привязать его к сессии.

[
{
    "login" : "ASPushkin",
    "located" : "Berlin",
    "Full" : "Пушкин Александр Сергеевич",
    "Group" : "Г40"
}, {
    "login" : "IAKras",
    "located" : "Saratov",
    "Full" : "Крас Иван Андреевич",
    "Group" : "41"
}, {
    "login" : "AIBelovaya",
    "located" : "SPB",
    "Full" : "Беловая Анастасия Игоревна",
    "Group" : "Г42"
}, {
    "login" : "AAPetrov",
    "located" : "Mir",
    "Full" : "Петров Алексей Андреевич",
    "Group" : "Г43"
}
]

<?php 
session_start();

$string = file_get_contents("users.json");
$data = json_decode($string, true);

$INlogin = filter_var(trim($_POST['login']), FILTER_SANITIZE_STRING);


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

Автор решения: Алексей Шиманский

Можно использовать array_filter для отсеивания ненужных данных:

$login = 'AAPetrov';
$INlogin = filter_var(trim($login), FILTER_SANITIZE_STRING);

$user = array_values(array_filter($arr, function($item) use ($login) {
    return $item['login'] === $login;
}, ARRAY_FILTER_USE_BOTH));

if (!empty($user))
    print_r($user[0]);

А вообще одного банального цикла достаточно:

$user= [];

foreach ($array as $item) {
    if ($item['login'] === $login) {
        $user = $item;
        break;
    }
}

if (!empty($user))
    print_r($user);
→ Ссылка