This is a very common error when we pass the non-array to count() function. You will get the exact same error message as below-
WARNING count(): Parameter must be an array or an object that implements Countable on line number 3
1
Suppose you have a variable called foo and you have initialized it by bar. Now if you will pass the foo to count() function, you will get the above warning.
<?php
$foo = "bar";
echo count($foo);
So the count() function in PHP will return the number of elements in an array. For the above example, $foo is not an array, and count() accepts the array as its parameter.
Also Read: Check if a string contains a specific word in PHP?
How to fix Parameter must be an array or an object in count()?
Never ever trust a variable type. You don’t know that your variable is an array or an object if you don’t explicitly declare it as an array or object.
Suppose you want to fetch all active user from the MySQL database and store it into the $active_user variable. But if there is no active user present and if you pass the $active_user to count($active_user), it will give you the above warning. So first check if the variable is an array or object.
How to check that?
If you are using PHP >= 7.3 you can use is_countable(). Check the below code:
Also Read: How to target a specific city to show your website in PHP?
if(is_countable($foo)) {
echo count($foo);
}
If you are using PHP >= 7.1 you can use is_iterable(). Check the below code:
if(is_iterable($foo)) {
echo count($foo);
}
Answer of that problem is:
count(array($foo));