Сравнение значения ключа в 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);