I am working on a chat. I have an array that contains the info regarding the room (in the example below, 2 rooms (the lounge, the beach)).
I have an issue when I have an empty room (in the example the beach), as it contains by default no user, (which is a Null user).
$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
I am trying to count, in my array, the number of users currently present in the room. Looking around Stack Overflow, I managed to find the solution I wanted:
foreach($roomNusers as $room => $value) { echo $room.' user count:'.count($room['users']) }
This output:
The lounge user count: 2 The beach user count: 1
My issue is that it counts the user [null] in the beach.
How can I count the number of users not null per room?
I thought of a workaround with something similar to:
$countperroom= .count($room['users'])-1; if(isset(end([$room]['users']))){$countuser+1;}
In this, the last user is empty, I do not add an user, but I do not know how to write this.
Advertisement
Answer
Rather than counting the number of values in $room['users']
, you could count the number of keys after filtering them to remove empty keys:
foreach ($rooms as $name => $room) { $users = count(array_filter(array_keys($room['users']))); echo "$name: $users usersn"; }
Output (for your sample data):
The Lounge: 2 users The Beach: 0 users