#php #arrays
#php #массивы
Вопрос:
Я работаю над чатом. У меня есть массив, содержащий информацию о комнате (в приведенном ниже примере 2 комнаты (гостиная, пляж)).
У меня проблема, когда у меня есть пустая комната (в примере the beach), поскольку в ней по умолчанию нет пользователя (который является нулевым пользователем).
$roomNusers=Array (
[The Lounge] =>
Array ( [id] => 1
[privacy] => public
[users] => Array
[QUICHE POIREAU] => Array
[smiley] => smi_smile.gif
[name] => QUICHE POIREAU
[state] => NULL
[id] => 1 )
[JOHN DOE] => Array
[smiley] => smi_smile.gif
[name] => Joe FRANC
[state] =>
[id] => 40 )
[The Beach] => Array
[id] => 2
[privacy] => public
[users] => Array
[Null] => Array
[smiley] => Null
[name] => Null
[state] => Null
[id] => Null
Я пытаюсь подсчитать в своем массиве количество пользователей, присутствующих в данный момент в комнате.
Оглядываясь вокруг Stack Overflow, мне удалось найти решение, которое я хотел:
foreach($roomNusers as $room => $value)
{
echo $room.' user count:'.count($room['users'])
}
Этот вывод:
The lounge user count: 2
The beach user count: 1
Моя проблема в том, что он подсчитывает пользователя [null] на пляже.
Как я могу подсчитать количество пользователей, не равное нулю, в комнате?
Я подумал об обходном пути с чем-то похожим на:
$countperroom= .count($room['users'])-1;
if(isset(end([$room]['users']))){$countuser 1;}
В этом случае последний пользователь пуст, я не добавляю пользователя, но я не знаю, как это написать.
Ответ №1:
Вместо подсчета количества значений в $room['users']
, вы можете подсчитать количество ключей после их фильтрации, чтобы удалить пустые ключи:
foreach ($rooms as $name => $room) {
$users = count(array_filter(array_keys($room['users'])));
echo "$name: $users usersn";
}
Вывод (для ваших выборочных данных):
The Lounge: 2 users
The Beach: 0 users
Комментарии:
1. отлично, большое вам спасибо за ваш вклад, и я действительно оценил время, которое вы потратили на создание примера! <3