loading
본문 바로가기

워드프레스

[PHP 프로그래밍 입문] 반복문을 이용한 배열 원소값 입력

반응형

PHP 프로그래밍 입문 127p에 나오는 예제를 보는데 순간적으로 이게 무슨 뜻인지 잘 이해가 되지 않더라

특별히 어려운 것 없는 굉장히 쉬운 예제였는데 보는 순간 응(?) 싶었는데 몇분 정도 쳐다보니 그제서야 이해가 되는.. 

 

문제의 예제 전체 코드

<?
	
for($i=0; $i<10; $i++)
	$a[$i]=$i+1;
        
for($i=9; $i<0; $i--)
	$b[9-$i]=$i+1;
        
for($i=0; $i<10; $i++)
	$c[$i]=$a[$i]*$b[$i];

for($i=0; $i<10; $i++)
    echo "$a[$i] x $b[$i] = $c[$i]<br>";
        
?>

순간적으로 내가 헷갈렸던 부분은 이 부분이다

 

for($i=0; $i<10; $i++)
      $a[$i]=$i+1;

 

조건문에 분명히 $i++가 있어서 변수 i는 반복문을 돌 때마다 자동으로 +1이 되는데

실행문에서 왜 또 변수 i에 +1을 해주는 걸까?

설명문에서도 이 부분을 설명해주지 않는다 ㅠㅠ 

1. 해답 및 코드 풀이


for($i=0; $i<10; $i++)  // $i의 초기값은 0, $i가 10보다 작을 때까지(=9까지)  $a[$i]=$i+1;를  반복하면서 $i에 1씩 더해준다

      $a[$i]=$i+1; 


즉, 변수i가 9가 될 때까지 반복하는데 반복문을 한번 돌아서 나올 때마다 변수 i값에 +1씩 더해준다는 뜻이다

여기서 순간적으로 혼란이 생길수 있는 것은 조건문 내에 반복문을 돌 때마다 +1씩 해주라는 ( $i++ )가 있는데 

for문 내부에서 또 1을 더한다는 것이다 ( $a[$i]=$i+1; )

 

여기에서 염두에 두어야 할 것은 

$a[숫자] 는 배열의 인덱스 번호를 지칭하는 것이다

 

배열의 익덱스 번호는 0번부터 시작한다


[사과, 나비, 바람개비, 통닭]


 

과 같은 배열이 있다면 우리의  상식 선에서 배열 값에 번호를 붙인다면 사과=1번, 나비=2번, 바람개비=3번, 통닭=4번이 되겠지만 

PHP 배열에서는 그렇지가 않다는 것이다

다시 말하지만, 배열의 인덱스 값은 0부터 시작한다


[사과, 나비, 바람개비, 통닭] 

  0번    1번      2번      3번

 

즉, 사과=0번, 나비=1번, 바람개비=2번, 통닭=3번이라는 것이다


반응형

이 점을 염두에 두고 코드를 다시 살펴보자


for($i=0; $i<10; $i++)
      $a[$i]=$i+1;

 

$i에 0이 들어갔을 때

$a[0]=0+1;이 되는 것이다


이게 무슨 말이냐면

a라는 배열의 0번째 인덱스에 1이라는 값을 저장하겠다는 얘기다

 

$i는 9까지 +1씩 증가할테니

$i가 0~9가 되는 동안 다음과 같은 배열이 생기는 것이다


 

[1,2,3,4,5,6,7,8,9,10]


위 배열을 인덱스 번호로 봤을 때는 다음과 같다


1= 0번

2=1번

3=2번

4=3번

5=4번

6=5번

7=6번

8=7번

9=8번

10=9번


그렇기 때문에 for문 조건식 내부의 $i++는 인덱스 번호의 증가를 의미하는 것이고 

실행문 우변에서 $i+1은 실제 배열에 들어가는 값을 의미하는 것이다

 

인덱스 번호 +1이 배열 내의 값이기 때문이다 

반응형