php - PHP - 切换 var 值自动增量在 While 内意外工作
问题描述
希望你能帮我解决这个问题......所以基本上,我正在测试一个 While 内的开关,它循环并比较值(一旦某个值达到限制 $numRow,while 结束并停止执行其余代码) .
我的代码如下:
<?php
$n = 0;
$i = 0;
$numRows = 4;
while ($n <= $numRows){
switch($i++){
case 1:
if($i == $numRows){
echo 'Case 1:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";
} else {
echo 'Case 1: La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";
}
break;
case 2:
if($i == $numRows){
echo 'Case 2:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";
} else {
echo 'Case 2:La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";
}
break;
case 3:
if($i == $numRows){
echo 'Case 3:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";
} else {
echo 'Case 3:La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";
}
break;
case 4:
if($i == $numRows){
echo 'Case4:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";
} else {
echo 'Case 4:La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";
}
break;
case 5:
if($i == $numRows){
echo 'Case 5:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";
} else {
echo 'Case 5: La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";
}
break;
}
$n++;
echo $n;
}
我觉得奇怪的是代码的输出。变量 $I 应该从 1 开始,但在情况 1 中,它取 2 的值……这可能吗?代码中没有其他操作将 +1 与变量相加...
输出:
1Case 1: La variable i =2 es diferente a la cantidad de columnas n=1
2Case 2:La variable i =3 es diferente a la cantidad de columnas n=2
3Case 3:La variable i =4 es igual a la cantidad de columnas n=3
4Case 4:La variable i =5 es diferente a la cantidad de columnas n=4
5
是否有任何拼写错误或我在语法上做错了什么?我正在学习PHP作为一种爱好,所以想了解这里是否有任何新手错误:)
提前致谢!
解决方案
使用预增量:++$i
而不是$i++
:
switch(++$i){
//...
}
发生的情况是,当您进行后增量 ( $i++
) 时,变量不会立即采用新值。只有当您再次使用该变量时,它才会采用新值。所以当你在 switch 增量时$i
仍然是1
. 然后在 中case: 1
,当您使用变量时,会发生实际增量,它显示 2 而不是 1。
这将与执行以下操作完全相同:
$++;
switch($i){
//...
}
在此处阅读更多相关信息。
推荐阅读
- azure - 交换后应用服务上的旧 WEBSITE_HOSTNAME 值
- generics - 使用 mem::size_of: 时,在编译时无法知道 `T` 类型值的大小:
作为数组长度 - java - 用 yocto 交叉编译 jrxtx
- c++ - OpenCV如何有效地编码和发送网络摄像头视频流的数据?
- html - 在 a 中显示图像
- asp.net - 检查两个对象列表是否相等
- excel - 我想创建一个消息框来输入我要过滤的单元格数据
- sql - 如何使用 COUNT(*),但通过在另一列中重复值来分解
- if-statement - Arrayformula 将非空白单元格之间的空白单元格编号从 0 到 n
- reactjs - 第三方组件未获取 Material UI 主题