我想深入兔子洞,但我无法抓住这种情况。请解释一下:在循环步骤中上传数组
为什么不是从1开始(从2开始)?
$test_array = array();
for($i=0;$i<100;$i++ && $test_array[] = $i);
print_r($test_array);
我想深入兔子洞,但我无法抓住这种情况。请解释一下:在循环步骤中上传数组
为什么不是从1开始(从2开始)?
$test_array = array();
for($i=0;$i<100;$i++ && $test_array[] = $i);
print_r($test_array);
好吧,让我们走在了兔子洞更深检查$i
值。
1.我们的$i = 0
。然后声明$i++
是false。因为php首先检查$i
值,然后增加它。因此,由于$i++
为假,第二部分$test_array[] = $i
未执行。我们的$i = 1
(先前已增加)。然后声明$i++
为为真为$i
等于1
。 $i
被递增到2
和值2
写入$test_array[]
3,4,5和其他迭代中的相同。
一个小兔子洞的大maglite :-) – JustOnUnderMillions
没有语句运行所有的部分,然后比较每个部分与&&比较?就像'$ i = 0'那么'$ i ++'它会返回false,'$ test_array [] = $ i'应该返回true,并且&&比较将是错误的。这不是PHP的作品吗? –
不,PHP有从左到右的惰性评估(如果是'if'),并且如果确保某事使得结果为'false',则不会评估其他任何内容。为什么要评估一些无关紧要的事情? –
你能更清楚你的问题吗?目前没有意义 – DevDonkey
因为:它在'$ i = 0'时以'$ i'开始,然后在它首次添加到数组之前增加一个'$ i ++''$ test_array [] = $ i'。在'&&'运算符中,左边的参数在正确的参数之前被评估。 –
@KIKOSoftware这是如何回答OP的问题? –