PHP 배열 사용법, php배열 다루기 > 그누보드

본문 바로가기

사이트 내 전체검색

그누보드

PHP 배열 사용법, php배열 다루기

PHP 변수명


스칼라 변수 : 하나의 변수에 하나의 값만 있을 수 있다.


배열 변수 : 연관된 값들의 집합이다.



PHP 배열 사용법


    배열을 생성하려면 array() 라는 언어 구조를 사용한다. 키와 값으로 배열의 데이터가 정해져 있으며, 배열의 목록을 쉼표로 구분한다. 배열의 키와 값은 => 으로 구분된다.


    arr 배열을 순차 배열 또는 인덱스 배열이라고 부른다. 0 부터 +1 의 숫자가 더해지면서 데이터를 저장하는 방식이다. arr2 배열은 연관 배열이라고 부른다. 데이터의 위치만이 아닌 키와 값이 관계를 맺는 다는 의미이다.


$arr = array('1', '2', '3');

$arr2 = array('b'=>'blue', 'r'=>'red');

PHP 5.4 이후 변경된 배열 선언 방법


    5.4에서 도입된 배열 선언 방법은 array() 를 [] 대괄호 쌍으로 축약하는 방법이다. 


$arr = ['1', '2', '3'];

$arr2 = ['b'=>'blue', 'r'=>'red'];

PHP 배열 크기 구하기 count() 함수


    count() 함수를 사용하여 배열의 원소가 몇 개인지 알 수 있다.


$val = count($arr);

PHP 배열의 데이터를 순회하는 방법


    배열의 각 데이터를 순회 ( 돌리는 ) 방법 중 가장 손쉬운 방법은 foreach() 를 사용하는 것이다. 배열의 각 원소마다 코드 블록을 한 번씩 수행한다. foreach 구문 안에서 $value 의 값 변동은 실제 배열의 값과 상이하다. 배열내의 값을 바꾸기 위해서는 배열에 직접 접근해야한다. 


    Ex ) $meal[$key]++; (O)


            $value++; (X)


<?php

  print "array와 foreach.<br>";

  $row_styles = ['even','odd'];

  $style_index = 0;

  $meal = ['breakfast'=>'호두 번',

            'lunch'=>'캐슈너트',

            'snack'=>'오디',

            'dinner'=>'칠리가지'];

  echo "<table>";

  foreach($meal as $key => $value){

    echo '<tr class="' . $row_styles[$style_index] . '">';

    echo "<td>$key</td><td>$value</td></tr>\n";

    $style_index = 1 - $style_index;

  }

  echo "</table>";

?>

array_key_exists()란? 


    array_key_exists : 특정 키에 지정된 원소가 있는지 확인하는 함수이다.


if(array_key_exists('breakfast',$meals){

    // meals 배열에 breakfast 이라는 키에 지정된 원소 확인

}

in_array()란?


    in_array : 배열 원소 중 특정 값이 있는지 확인하는 함수이다. 


if(in_array('호두 번', $meals){

}

array_search()란?


    array_search : in_array 와 유사하지만, true / false 를 반환하는 in_array 와 다르게 array_search 는 원소의 키를 반환한다.


$dish = array_search('호두 번', $meals);

배열에 문장 선언하기 


    배열의 키에 화이트스페이스 ( 띄어쓰기 ) 나 문장기호가 들어 갔을때는 중괄호를 이용해 삽입할 수 있다. 


$meal['lunch desert'] = '밥';

echo "런치 디저트는 {$meal['lunch desert']}이다.";

unset()이란?


    배열에서 원소를 제거하기 위해 사용한다.


unset($meals['오디']);

implode()란?


    배열의 모든 원소를 한번에 출력할 때 사용한다.


$all = implode($meals, ', ');

echo $all;

explode()란?


    implode 와 반대로 문자열을 조각내어 배열로 만들 때 사용한다. 


$menu = explode($meals);

echo "1번 째 $menu[0]";

sort()란?


    배열을 정렬하는 함수이다. 배열의 원소의 값을 기준으로 배열을 정렬하고 배열의 키가 새로 지정된다.


<?php

  print "array와 foreach.<br>";

  $row_styles = ['even','odd'];

  $style_index = 0;

  $meal = ['breakfast'=>'호두 번',

            'lunch'=>'캐슈너트',

            'snack'=>'오디',

            'dinner'=>'칠리가지'];

  sort($meal);

  echo "<table>";

  foreach($meal as $key => $value){

    echo '<tr class="' . $row_styles[$style_index] . '">';

    echo "<td>$key</td><td>$value</td></tr>\n";

    $style_index = 1 - $style_index;

  }

  echo "</table>";

?>

    breakfast , lunch, snack, dinner 라는 key 값들이 숫자로 수정되며, 정렬은 원소의 값으로 처리된다. 


결과 값 :

0 오디

1 칠리가지

2 캐슈너트

3 호두 번

asort() 란?


    key 값을 숫자로 바꾸지 않고 그대로 유지하려면 sort() 대신 asort() 를 사용하자.


<?php

  print "array와 foreach.<br>";

  $row_styles = ['even','odd'];

  $style_index = 0;

  $meal = ['breakfast'=>'호두 번',

            'lunch'=>'캐슈너트',

            'snack'=>'오디',

            'dinner'=>'칠리가지'];

  asort($meal);

  echo "<table>";

  foreach($meal as $key => $value){

    echo '<tr class="' . $row_styles[$style_index] . '">';

    echo "<td>$key</td><td>$value</td></tr>\n";

    $style_index = 1 - $style_index;

  }

  echo "</table>";

?>

결과 값 :

snack 오디

dinner 칠리가지

lunch 캐슈너트

breakfast 호두 번

ksort() 란?


    배열 원소의 값을 기준으로 정렬하지 않고 키를 기준으로 정렬한다. 키/값 을 유지하면서 순서를 변경한다.


<?php

  print "array와 foreach.<br>";

  $row_styles = ['even','odd'];

  $style_index = 0;

  $meal = ['breakfast'=>'호두 번',

            'lunch'=>'캐슈너트',

            'snack'=>'오디',

            'dinner'=>'칠리가지'];

  ksort($meal);

  echo "<table>";

  foreach($meal as $key => $value){

    echo '<tr class="' . $row_styles[$style_index] . '">';

    echo "<td>$key</td><td>$value</td></tr>\n";

    $style_index = 1 - $style_index;

  }

  echo "</table>";

?>

결과 값 :

breakfast 호두 번

dinner 칠리가지

lunch 캐슈너트

snack 오디

rsort(), arsort(), krsort() 란?


    sort() 는 오름차순, rsort() 는 내림차순이며 arsort() 는 asort() 의 내림차순, ksort() 의 내림차순은 krsort() 이다. sort 앞에 r 을 붙여주면 오름차순이 아니라 내림차순으로 정렬한다. 


다차원 배열


    PHP 에서도 다차원 배열을 선언할 수 있다. 배열 원소의 값에 다른 배열을 넣을 수 있기 때문에 다차원 배열 생성이 가능하다.


$lunches = [ ['닭고기','가지','쌀'],['소고기','부추','국수'],['가지','두부']];

foreach($lunches as $key => $value){

  foreach($value as $key => $value2){

    echo "$value2";

  }

}

$meals = ['breakfast'=>['호두 번','커피'],'lunch'=>['캐슈너트','양송이버섯']];

foreach($meals as $breakfast => $value){

  foreach($value as $key => $value2){

    echo "$value2";

  }

}

for 와 foreach 의 차이점


    for 와 foreach 의 차이점은 배열 원소의 위치와 배열 원소의 값을 알아보는 것에서 차이가 난다. for 의 경우 배열안의 원소들의 인덱스 ( 위치 ) 를 순회하게 되고, foreach 는 배열 내의 원소들을 순회하게 된다. 



    for 문을 사용하면 배열의 값을 적접 제어하기 편하지만 조금 번거롭다. 반대로 foreach 는 간편하게 원소 값들을 출력할 수 있다. 하지만 원소의 위치를 알 수 있는 변수를 따로 마련해야 한다.


for($i = 0, $limit = count($meals); $i<$limit; $i++){

   //출력하기

}

관련글
  • [열람중]PHP 배열 사용법, php배열 다루기
  • 실시간 핫 잇슈
    Copyright © www.webstoryboard.com All rights reserved.