2017-04-24 71 views
-1

我想深入兔子洞,但我无法抓住这种情况。请解释一下:在循环步骤中上传数组

为什么不是从1开始(从2开始)?

$test_array = array(); 
for($i=0;$i<100;$i++ && $test_array[] = $i); 
print_r($test_array); 
+0

你能更清楚你的问题吗?目前没有意义 – DevDonkey

+0

因为:它在'$ i = 0'时以'$ i'开始,然后在它首次添加到数组之前增加一个'$ i ++''$ test_array [] = $ i'。在'&&'运算符中,左边的参数在正确的参数之前被评估。 –

+0

@KIKOSoftware这是如何回答OP的问题? –

回答

1

好吧,让我们走在了兔子洞更深检查$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和其他迭代中的相同。

+0

一个小兔子洞的大maglite :-) – JustOnUnderMillions

+0

没有语句运行所有的部分,然后比较每个部分与&&比较?就像'$ i = 0'那么'$ i ++'它会返回false,'$ test_array [] = $ i'应该返回true,并且&&比较将是错误的。这不是PHP的作品吗? –

+0

不,PHP有从左到右的惰性评估(如果是'if'),并且如果确保某事使得结果为'false',则不会评估其他任何内容。为什么要评估一些无关紧要的事情? –