繁体   English   中英

计算子/子数组中的条目

[英]counting entries in sub/subarray

我正在聊天。 我有一个数组,其中包含有关房间的信息(在下面的示例中,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'])
    }

这个 output:

The lounge user count: 2
the beach user count: 1

我的问题是它计算了海滩上的用户 [null]。

如何计算每个房间的用户数量不是 null?

我想到了一个解决方法。 类似于:

$countperroom= .count($room['users'])-1;
if(isset(end([$room]['users']))){$countuser+1;}

就像这是最后一个用户是空的,我不添加用户......但我不知道如何写这个......

任何帮助提示让我朝着正确的方向前进将不胜感激

谢谢你

与其计算$room['users']中值的数量,您可以在过滤它们以删除空键后计算键的数量:

foreach ($rooms as $name => $room) {
    $users = count(array_filter(array_keys($room['users'])));
    echo "$name: $users users\n";
}

Output(用于您的示例数据):

The Lounge: 2 users
The Beach: 0 users

3v4l.org 上的演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM