happy cat image

everdevel

우리 모두의 웹 입문, 에버디벨

UI 변경

배열(Array)

지금까지는 한개의 변수에 한개의 값을 넣어서 진행해왔는데요,
많은 양의 변수를 한개의 변수에 담아야 하는 경우도 많이 생깁니다.
이럴때 배열에 담습니다.
데이터 베이스에서 어떠한 데이터들을 가져올때도 배열에 담아서 사용하는 경우도 많습니다.

즉, 배열에는 여러가지 값을 담을 수 있습니다.
기존에는 $a = "우리집"; 이렇게 선언을 했는데요. 배열을 이용하면 $a에 우리집도 넣을수 있고 "로봇","여자친구","회사" 이런정보들을 넣을 수 있습니다.
주소를 국가,도,시,동,세부주소 등으로 넣는것을 배열에 넣어야 한다면
$userAddress = array('japan','tokyo','shibuyaku','1293-21');
위와 같이 입력 하면 되는거죠.
만약, 배열 없다면
$userAddressNation = "Japan";
$userAddressDo = "Tokyo";
$userAddressKu = "shibuyaku";
$userAddressBunji = "1293-21";
위와 같이 입력 해야 겠죠? 그럼 이제 배열에 대해서 알아볼까요?

빈배열을 선언하려면 값을 array(); 입력합니다. 아래와 같이

 $myAddress = array();

또는 바로 값을 입력 하셔도 무관합니다.

 $userAddress = array('japan','tokyo','shibuyaku','1293-21');

배열 출력하기.

그럼 $userAddress의 값들을 출력해 볼까요.
배열 값을 보면 japan, tokyo, shibuyaku, 1293-21이라는 값들이 존재합니다 이 값들은 배열안에서 각자의 번지수를 갖고 있습니다.
왼쪽부터 0으로 시작합니다. japan을 출력하려면 번지가 왼쪽부터 0부터 시작하기 때문에 아래와 같이 출력문을 작성하면 japan이 출력됩니다.

 <?php
 $userAddress = array('japan','tokyo','shibuyaku','1293-21');
 echo $userAddress[0]; //배열변수에 [ 를 열어서 번지수 0 을 적고 다시 닫고 ]
 ?>

어때요? 간단하죠? 그럼 japan 이외의 shibuyaku를 출력하고 싶다면 번지수가 2번 이겠죠 0부터 시작하기 때문에요.

 <?php
 $userAddress = array('japan','tokyo','shibuyaku','1293-21');
 echo $userAddress[2]; //배열변수에 [ 를 열어서 번지수 0 을 적고 다시 닫고 ]
 ?>

for문을 활용하여 전체를 출력해볼수도 있습니다 어떻게 할까요?
번지수는 숫자이므로 번지수자리에 변수를 넣으면 됩니다. 한번 해볼까요?
배열안에 4개의 값이 있는데요. 배열의 수를 알려면 count()함수를 사용합니다. 매우 간단합니다.
count($userAddress)
이렇게 사용합니다 그러면 4개의 값이 있으므로 4를 출력해줍니다.

 <?php
 $userAddress = array('japan','tokyo','shibuyaku','1293-21');
 echo count($userAddress); //배열수를 출력 결과는 4
 ?>

그럼 for문을 이용해서 출력해 봅시다.

 <?php
 $userAddress = array('japan','tokyo','shibuyaku','1293-21');
 $userAddressCount = count($userAddress) - 1;
 echo $userAddressCount;

 for($i = 0; $i <= $userAddressCount; $i++){
  echo $userAddress[$i].'
'; } ?>

위의 소스에서 보면 count($userAddress) - 1; 에서 -1을 합니다.
그 이유는 배열의 길이는 4이기 때문에 for문에서 이용하기 위해서 -1을 해줍니다.
번지수는 0부터 시작하기 때문에 0, 1, 2, 3 이렇게 3까지 도달하려면 총 4개의 번지수를 출력하기 때문입니다.

그리고 for문에서 $userAddress[$i]를 하면 $i는 for문 안에서 0으로 지정하고 조건에 의해 3까지 움직이기 때문에 출력할때 차례대로
$userAddress[0]; $i = 0
$userAddress[1]; $i = 1
$userAddress[2]; $i = 2
$userAddress[3]; $i = 3
으로 진행되기 때문입니다.
즉 배열수는 4이므로 4이며 배열 번지수는 0부터 시작 하므로 -1을 사용하지 않으면 for문에서는 0부터 4까지 0,1,2,3,4 총 5번을 실행하므로 -1을 해줘서 0,1,2,3를 실행하는것입니다.

지금까지 for문에 -1을 사용하면서 불편함을 감수해서 배열의 내용을 출력했던 이유는 foreach를 설명하기 위함입니다.
위 소스대로 하면 번지수 까지 생각하면서 출력해야 하므로 귀찮죠?

그래서 한번에 출력하는 방법또한 있는데 그것이 바로 foreach이죠? 이걸 사용하면 정말 간단합니다.

<?php
    $userAddress = array('japan','tokyo','shibuyaku','1293-21');
    foreach($userAddress as $ua){
        echo $ua.'
'; } ?>

어때요? 간단하나요? foreach(배열 as 출력문에 사용할 변수 선언) 이렇게 하면 끝~ 그리고 foreach문 안에 echo 로 [출력문에 사용할 변수]를 작성하면 끝입니다. ^^;

배열에 번지수를 내 마음대로 지정하기.

배열에 번지수가 숫자로 0부터 해서 자동으로 붙습니다. 이것을 숫자로 표시하기 때문에 0이 무엇을 의미하는지 자료에 따라서 어려움이 있을수 있습니다.
이 번지수를 사용자가 직접 지정할 수 있습니다. 그럼 같이 해볼까요?
배열을 선언할때 $userAddress = array('japan','tokyo','shibuyaku','1293-21'); 이렇게 선언하지 않고 번지수도 같이 넣어 줍니다.
이렇게
$userAddress = array('nation'=>'japan', 'do'=>'tokyo', 'ku'=>'shibuyaku', 'bunji'=>'1293-21');
그리고 출력할때는 숫자대신 번지이름을 적어줍니다. 이렇게
$userAddress['nation']; 어때요? 쉽죠?

<?php
    $userAddress = array('nation'=>'japan', 'do'=>'tokyo', 'ku'=>'shibuyaku', 'bunji'=>'1293-21');
    echo $userAddress['nation'];
?>

foreach문으로 출력을 할려면 똑같습니다.

<?php
    $userAddress = array('nation'=>'japan', 'do'=>'tokyo', 'ku'=>'shibuyaku', 'bunji'=>'1293-21');
    foreach($userAddress as $ua){
        echo $ua.'
'; } ?>

그럼 이만~~ 다음 강좌로 갈까요?

강좌로 돌아가기