我尝试测试一个新的东西,只是看到一个不寻常的输出我无法得到循环内发生的事情,任何人都可以解释我如果我们采取一个数组并将该数组分配给我们运行的变量时会发生什么循环,我们提供$ array和$ array的索引与foritop的inititlizer这样的$ array [$ array [$ i]]所以我的意思是我很困惑完全解释但是你可以查看代码并让我知道到底是什么正在发生
<add name="DefaultAppPool" enable32BitAppOnWin64="true" managedRuntimeVersion="v4.0" />
输出78,因为它添加了值,但如果我删除$ sum + =并按此记下
$array = array(1, 2, 3, 5, 8, 13, 21, 34, 55);
$sum = 0;
for($i = 0; $i < 5; $i++) {
$sum += $array[$array[$i]];
}
echo $sum ;
所以现在我将获得这样的输出
2 3 五 13 55
我无法在这个循环中得到完全重复的东西
答案 0 :(得分:3)
您正在使用数组的值来访问密钥。
$array = array(1, 2, 3, 5, 8, 13, 21, 34, 55);
$sum = 0;
for($i = 0; $i < 5; $i++) {
$sum += $array[$array[$i]] . "<br />";
}
echo $sum ;
循环1:
$i = 0;
$sum += $array[$array[0]];
$sum += $array[1];
$sum += 2;
循环2:
$i = 1;
$sum += $array[$array[1]];
$sum += $array[2];
$sum += 3;
循环3:
$i = 2;
$sum += $array[$array[2]];
$sum += $array[3];
$sum += 5;
循环4:
$i = 3;
$sum += $array[$array[3]];
$sum += $array[5];
$sum += 13;
循环5:
$i = 4;
$sum += $array[$array[4]];
$sum += $array[8];
$sum += 55;
因此...
$sum = 2 + 3 + 5 + 13 + 55 = 80
答案 1 :(得分:1)
$array[$i]
$array[0]
- &gt; 1
- &gt; $array[$array[$i]]
。$array[1]
- &gt; 2
- &gt; myproc = subprocess.Popen(
"/path/to/my/python/3/script",
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
cwd=mypwd,
shell=True)
。等等。
答案 2 :(得分:1)
第一次迭代($ i = 0)
$array[$i] = $array[0] = 1
和
$array[1] = 2
第二次迭代($ i = 1)
$array[$i] = $array[1] = 2
和
$array[2] = 3
第三次迭代($ i = 2)
$array[$i] = $array[2] = 3
和
$array[3] = 5
第四次迭代($ i = 3)
$array[$i] = $array[3] = 5
和
$array[5] = 13
第五次迭代($ i = 4)
$array[$i] = $array[4] = 8
和
$array[8] = 55
答案 3 :(得分:1)
当$ i = 0 $ array [$ array [$ i]]成为$ array [$ array [0]],因为$ array [0] = 1,所以$ array [1]为$ array [1]评估为2.
继续以同样的方式思考。
例如,对于$ i = 4 $ array [$ array [$ i]]变为$ array [$ array [4]],这是$ array [8],因为$ array [4] = 8.所以$ array [8]评估为55。
一步一步思考。