计算子/子数组中的条目

时间:2021-01-06 00:07:53

标签: php arrays

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

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

任何帮助我找到正确方向的提示将不胜感激

谢谢

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

Demo on 3v4l.org