PHP中缺少连接部分
代码如下:PHP中缺少连接部分,php,Php,代码如下: <?php for($i =0, $x = 100 ; $i<1; $i++){ echo $x . 'y' . $i+1 . ' = '. $i*$x . ' <br>'; } ?> 我的预期输出是:100 y 1=0 但实际结果是:101=0 “你”去哪儿了 比+具有更多的运算符优先级 echo $x . 'y' . $i+1 = 101 因为它将作为 echo ($x . "y"
<?php
for($i =0, $x = 100 ; $i<1; $i++){
echo $x . 'y' . $i+1 . ' = '. $i*$x . ' <br>';
}
?>
我的预期输出是:100 y 1=0
但实际结果是:101=0
“你”去哪儿了
比+
具有更多的运算符优先级
echo $x . 'y' . $i+1 = 101
因为它将作为
echo ($x . "y" . $i)+1 ;
事情就是这样
$x3= ($x . "y" . $i); //100y0
$u = $x3+1 ; //101
您正在对字符串执行+
操作。因此,任何字符前的第一个数字将作为整数值
例如:
通过执行算术运算,解释器将字符串转换为整数,将丢弃所有其他字符。因此,100y+1=101
它不会是101y
如上所述(Subin Thomas)回答:将1与varchar值相加,如100y0,将1与100相加(整数的第一次出现)。以下代码将按预期工作
<?php
for($i =0 ,$x = 100; $i<1; $i++){
echo $x . 'y' . ($i+1) . ' = '. $i*$x . ' <br>';
}
?>
要测试:
<?php
for($i =0, $x = 100 ; $i<1; $i++){
echo $x . 'y' . ($i+1) . ' = '. $i*$x . ' <br>';
}
?>
您的代码中没有错误,您的输出将是:100 y 1=0错误。输出为101=0。你可以检查一下,我想你应该预料到100y1=0
!!打字错误。对不起。@回答正确的人$x3=100y0;然后在$x3中加上+1,变成101。。非常令人困惑。。100y0+1=101?好的,我能理解你说的。100y0+1=101。。。好的为什么答案是101而不是101y y y到哪里去了?好的,在这个+运算符旁边,编译器应该在101之后有writer y。。我就是这么说的。是你说的吗。。编译器将丢弃所有其他字符,因为它将字符串转换为整数。。。。现在可以了,谢谢你的记录:)伙计,你完全正确。但同样,如果不在($i+1)周围加括号,那么为什么它会变成101=0$x=100。当它加上$i+1=1,然后加上100y+1时,y将把它合并为100y。它将取第一个出现的整数,即100+1=101。好的,正如你所说的,它将取第一个出现的整数,好的,那么y到哪里去了?你使用的是+运算符。这将接受它前面的任何字符,因为整数y不是整数,所以它会删除“y”。。但是如果我们不放括号呢。。只需对实际答案进行解释..看看帖子#56。。。
<?php
for($i =0, $x = 100 ; $i<1; $i++){
echo $x . 'y' . ($i+1) . ' = '. $i*$x . ' <br>';
}
?>