Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP while循环忽略其条件_Php_Arrays_While Loop - Fatal编程技术网

PHP while循环忽略其条件

PHP while循环忽略其条件,php,arrays,while-loop,Php,Arrays,While Loop,目前,我尝试在php中创建一个函数,该函数只读取数组字段的int值,并将其与max值进行比较。 如果达到该最大值,则应将该字段的值设置为零,跳转到数组中的下一个字段,并增加存储在其中的int值。 如果该值也达到了最大值,则执行与上述相同的操作。 如果上述条件不成立,则应增加数组中的存储值 我的代码如下所示: if($sign_counter[0] === (count($pw_signs) - 1)){ $counter = 0; while($sign_counter[$cou

目前,我尝试在php中创建一个函数,该函数只读取数组字段的int值,并将其与max值进行比较。
如果达到该最大值,则应将该字段的值设置为零,跳转到数组中的下一个字段,并增加存储在其中的int值。
如果该值也达到了最大值,则执行与上述相同的操作。
如果上述条件不成立,则应增加数组中的存储值

我的代码如下所示:

if($sign_counter[0] === (count($pw_signs) - 1)){
    $counter = 0;
    while($sign_counter[$counter] === (count($pw_signs) - 1)){
        $sign_counter[$counter] = "0";
        $counter++;
    }
    $sign_counter[$counter]++;
}
else{
    $sign_counter[0]++;
}
我在我的网站和浏览器上用不同的值多次测试了这部分函数。我还检查了这些值是否正确存储在数组中以及所需的变量中

这就是我的阵列的外观:

$sign_counter = array("38", "2");
例如:

$sign\u计数器用于存储int值的数组
(计数($pw_符号)-1)始终等于38(因为计数数组中有39个字段)
$计数器用于确定阵列中的字段位置

现在,如果我将值“38”存储在数组的第一个字段中,将值“2”存储在数组的第二个字段中,那么代码应该检测到,在第一个字段中达到最大值,将该字段的值设置为0,然后跳到下一个字段并将其值增加1

代码只是增加数组第一个字段的值,而不是我想要实现的值。
看起来while循环只是忽略了自己的条件,但值本身似乎不是问题所在

我真的不明白为什么while循环的行为是这样的。
我真的错过了什么吗

非常感谢您的帮助。

问候Sleepy

问题在于您将值存储为字符串,而不是数字,并且您使用的是
=
运算符,它不会在不同类型之间执行类型强制<代码>计数($pw_符号)-1将始终是一个数字,而不是字符串,所有
=
测试将失败


去掉所有数字周围的引号,它应该可以按需要工作。如果值的来源是外部的,则在存储到数组中之前,使用
intval()
将它们转换为数字。

问题在于,您将值存储为字符串,而不是数字,并且使用
==
运算符,该运算符不会在不同类型之间执行类型强制<代码>计数($pw_符号)-1将始终是一个数字,而不是字符串,所有
=
测试将失败


去掉所有数字周围的引号,它应该可以按需要工作。如果值的来源是外部的,则在存储到数组之前,使用
intval()
将它们转换为数字。

符号计数器值是字符串数据类型(带整数值);但是你要用一个整数值做一个
==
(键入)检查该死的,那很容易。非常感谢,现在它工作了。在编码时可能应该更加集中精力…您的符号计数器值是字符串数据类型(带有整数值);但是你要用一个整数值做一个
==
(键入)检查该死的,那很容易。非常感谢,现在它工作了。可能在编写代码时应该更加集中精力。。。