I have a simple function to count numbers of columns with specific value in the array:
echo 'Status-accept: ' . array_count_values(array_column($array, 'status'))['Accept'];
it works well while accept
exists in the array. If not I get Undefined index: Accept
.
My array looks like that:
array{ ... ["status"]=> string(7) "Accept" ... }
How can I add something like isset
here?
Advertisement
Answer
With oneliner is it not possible (or the code will be messy), so you have to store a value with counts somewhere and then use ??
operator for example:
$counts = array_count_values(array_column($array, 'status')); echo 'Status-accept: ' . ($counts['Accept'] ?? 0);
As a oneliner you can:
echo 'Status-accept: ' . count(array_filter($array, function($v) { return $v['status'] === 'Accept'; }));
Here we filter all items where status field is 'Accept'
and then just count filtered items. If there are no items – filtered array will be empty and we’ll get 0
as result.