count():参数必须是一个数组或一个对象,该对象将根据数组大小实现可计数错误

时间:2019-06-26 20:02:52

标签: php arrays json count

仅当返回的数组过长时,以下代码中才会生成此错误。使用短数组(我不知道确切数量)不会发生。

$phone_numbers = array();
if(!empty($_POST['phone_numbers']))
    $phone_numbers = json_decode($_POST['phone_numbers']);
    $phone_numbers_var = str_repeat('?,', count(json_decode($_POST['phone_numbers'])) - 1) . '?'; // <-- error line

count()参数是否有限制?

2 个答案:

答案 0 :(得分:2)

首先检查您$ _POST ['phone_numbers']得到了什么

请记住:

var_dump(count(null)); var_dump(count(false));

将输出:

Warning: count(): Parameter must be an array or an object that implements Countable in

我认为PHP 7.2版的计数有点奇怪...但是您可以尝试这样的事情:

https://wiki.php.net/rfc/counting_non_countables

编辑:

仅作评论:

$POST['phone_numbers'] = [165567, 545675, 655666];

如果您尝试这样做:

json_decode($POST['phone_numbers']);

将返回此:

WARNING json_decode() expects parameter 1 to be string, array given on line number 4

还有那件事...你知道..只要这样做:

count($POST['phone_numbers']);

答案 1 :(得分:0)

很有趣,但似乎如果数组中有一些以0开头的数字,则会发生错误。当我删除初始0可以。

 $phone_numbers = [011364346387, 33334444, ..., n] //error
 $phone_numbers = [11364346387, 33334444, ..., n] //is ok!