Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как проверить значения всех элементов массива (объкта) в PHP?

R V Ученик (93), закрыт 1 месяц назад
Есть массив (ассоциативный) для онлайн-игры, в нём такая структура (упрощённо) :
{
"id": "идентификатор игровой сессии",
0: { "nick": "ник Игрока",
"Прочие параметры", "прочие параметры"},
1: { то же самое},
...
5: {то же самое}
}
В общем, есть идентификатор в корне, а также под числовыми индексами сведения об игроках
Так вот, чтобы не перебирать вручную весь этот массив, хочу сделать функцию проверки, есть ли уже игрок с заранее известным ником в этом массиве или нет. Поскольку к файлу могут обратиться повторно, чтобы не совершать второй раз действия, который должны совершиться один раз при первом обращении. Короче, "защита от неправильной эксплуатации". Самый простой вариант: добавлять в массив элемент с названием "имя Игрока" и любым значением и проверять isset(), но так будет увеличиваться объём массива. Можно ли просто пробегаться по значениям и если встретить там искомое слово (ник), выдать true, если не встретить - выдать false?
Лучший ответ
HomaMagnat Знаток (266) 2 месяца назад
у тебя массив двумерный (айди и внутри параметры включая ник)
сделал так, должно работать:

 //парсированный массив 
$array = [
1 => ['nick' => 'ник 1', 'param' => 'другой параметр'],
2 => ['nick' => 'ник 2', 'param' => 'другой параметр'],
3 => ['nick' => 'ник 3', 'param' => 'другой параметр'],
];

function findnick($thearray, $thenick) { //функция с аргументами массива и искомого ника
$result = false; //по умолчанию релультат false
foreach ($thearray as $item) { //перебираем массив по индексам
if (isset($item['nick']) && $item['nick'] === $thenick) {
$result = true; //если нашли меняем на true
}
}
return $result;
}

findnick($array, 'ник 2'); //вернёт true
findnick($array, 'тест'); //вернёт false
Остальные ответы
твой интимный гусь Мудрец (10306) 2 месяца назад
в зависимости от версии php решиний множество для Json структур/ Готовых скриптов и библиотек для работы с json
R VУченик (93) 2 месяца назад
Вообще, из-за того, что у меня нет ООП, я юзаю 5 версию. Нравится мне процедурный стиль, он красивее и логичнее. 7 не нравится.
У меня данные хранятся в json, я их парсю функцией json_decode(, true);
Какая функция позволяет пробежаться по значениям? Не хочу городить огород из функций, есть ли одна, чтобы в одной строчке уместилась?)
R V, в процедурном стиле можно и на современной версии PHP писать, не обязательно для этого ставить дырявое старьё
R VУченик (93) 2 месяца назад
Вдруг с обратной совместимостью проблемы будут, нафиг надо рисковать. Хотя я MySQL не использую, но мало ли что. Работает - не надо трогать)
R VУченик (93) 2 месяца назад
PHP 7 для понтов, мне за глаза хватает возможностей PHP 5.6
step Мастер (1348) 2 месяца назад
если ник игрока уникальный, то вместо номера ключем может быть ник.
R VУченик (93) 2 месяца назад
Ник уникальный, да, но там фишка в том, что важен порядок игроков, в котором они подключились, а по числовым ключам проще всего перечислять
Похожие вопросы