我看了一個問題在PHP相關的數組。但問題是數組中的數組。問題的輸出是「78」。但我不知道它是如何工作的。請解釋一下......數組如何在PHP中工作?
<?php
$arr= array(1,2,3,5,8,13,21,34,55);
$sum = 0;
for($i=0; $i<5; $i++)
{
$sum += $arr[$arr[$i]];
}
echo$sum;
?>
我看了一個問題在PHP相關的數組。但問題是數組中的數組。問題的輸出是「78」。但我不知道它是如何工作的。請解釋一下......數組如何在PHP中工作?
<?php
$arr= array(1,2,3,5,8,13,21,34,55);
$sum = 0;
for($i=0; $i<5; $i++)
{
$sum += $arr[$arr[$i]];
}
echo$sum;
?>
它是在指數$arr[$i]
,這是不一樣的,在$i
元素添加元素。
╔═════════════╦════╦═══════════════════╦══════════════╦══════╗
║ Iteration ║ $i ║ $index = $arr[$i] ║ $arr[$index] ║ $sum ║
╠═════════════╬════╬═══════════════════╬══════════════╬══════╣
║ before loop ║ - ║ - ║ - ║ 0 ║
║ 1 ║ 0 ║ 1 ║ 2 ║ 2 ║
║ 2 ║ 1 ║ 2 ║ 3 ║ 5 ║
║ 3 ║ 2 ║ 3 ║ 5 ║ 10 ║
║ 4 ║ 3 ║ 5 ║ 13 ║ 23 ║
║ 5 ║ 4 ║ 8 ║ 55 ║ 78 ║
╚═════════════╩════╩═══════════════════╩══════════════╩══════╝
您可以在this phpfiddle example中看到這一點。
謝謝你的解釋。 –
爲了清晰起見,我更改了一些變量名稱和間隔操作,並添加了很多評論。我希望這有助於澄清for循環內發生了什麼:)。
<?php
/**
* Think of this as [0 => 1, 1 => 2, ...8 => 55,] or more abstractly as
* [index => value, index => value] where Array indices
* start at 0 and climb by every additional value.
*/
$arrayVariable = [1,2,3,5,8,13,21,34,55,];
$sumOfArrayParts = 0;
/* Use for loop to create a bounded iteration (in this case run 5 times) */
for ($arrayIndex = 0; $arrayIndex < 5; $arrayIndex++) {
/**
* Separating this into a separate step for clarity,
* set the index to whatever number is at the index given by $arrayIndex
*/
$chosenIndex = $arrayVariable[$arrayIndex];
/* Index Values: 1, 2, 3, 5, 8 */
$chosenNumber = $arrayVariable[$chosenIndex];
/* Number Values: 2, 3, 5, 13, 55 */
/* Add current value at array index */
$sumOfArrayParts += $chosenNumber;
/**
* Iteration values:
* 1) 0 + 2 // $sumOfArrayParts = 2
* 2) 2 + 3 // $sumOfArrayParts = 5
* 3) 5 + 5 // $sumOfArrayParts = 10
* 4) 10 + 13 // $sumOfArrayParts = 23
* 5) 23 + 55 // $sumOfArrayParts = 78
*/
}
echo $sumOfArrayParts;
?>
'$改編[$ i]'就是你作爲'$ arr'的主要使用的表達? – Rizier123
你能解釋一下嗎? –
'$ sum + = $ arr [$ arr [$ i]]'與'$ index = $ arr [$ i]相同; $ sum + = $ arr [$ index];' – jonhopkins