我正在聊天。 我有一个数组,其中包含有关房间的信息 (在下面的示例中,2 个房间(休息室、海滩))。
当我有一个空房间(在海滩示例中)时,我遇到了问题,因为它默认不包含任何用户(即 Null 用户)。
$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
我正在尝试在我的数组中计算房间中当前存在的用户数量。 环顾stackoverflow,我设法找到了我想要的解决方案:
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;}
就像这是最后一个用户是空的,我没有添加用户...但我不知道如何写...
任何帮助我找到正确方向的提示将不胜感激
谢谢
答案 0 :(得分:1)
与其计算 $room['users']
中值的数量,您还可以在过滤掉空键后计算键的数量:
foreach ($rooms as $name => $room) {
$users = count(array_filter(array_keys($room['users'])));
echo "$name: $users users\n";
}
输出(用于您的示例数据):
The Lounge: 2 users
The Beach: 0 users