仅当返回的数组过长时,以下代码中才会生成此错误。使用短数组(我不知道确切数量)不会发生。
$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()参数是否有限制?
答案 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!