2016-12-21 13 views
1

배열과 관련된 PHP에서 질문을 보았습니다. 그러나 질문은 배열의 배열에 있습니다. 질문의 결과는 "78"입니다. 하지만 어떻게 작동하는지 모르겠습니다. 그것은 $i에있는 요소와 동일하지 않습니다 인덱스 $arr[$i]에서 요소를 추가하고어떻게 배열의 배열 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; 
?> 
+0

'$ arr [$ i]'는'$ arr'의 키로 ​​사용하는 표현식입니까? – Rizier123

+0

설명해 주시겠습니까? –

+1

'$ sum + = $ arr [$ arr [$ i]]'는'$ index = $ arr [$ i];와 동일합니다. $ sum + = $ arr [$ index];' – jonhopkins

답변

4

... 그것을 설명하십시오.

╔═════════════╦════╦═══════════════════╦══════════════╦══════╗ 
║ 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에서 볼 수 있습니다.

+0

당신의 친절한 explantion 주셔서 감사합니다. –

2

명확성을 위해 일부 변수 이름과 간격을 띄우는 동작을 변경하고 많은 의견을 추가했습니다. 나는 이것이 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; 
?> 
관련 문제