Infra & Security Eng/Programming

[PHP] - 배열 정의, 1,2차원 배열의 종류와 특징, php 코드 실습과 해설

엔지니어 E 2026. 3. 18. 17:52
반응형

배열의 정의

배열은 여러 개의 데이터를 하나의 이름으로 묶어서 관리하는 것이다. 변수를 수십 개씩 따로 만들지 않고, 번호나 이름을 붙여 한꺼번에 다룰 수 있게 해준다 

예시: $a1, $a2, $a3... 대신 $a[1], $a[2], $a[3]...으로 표현

 

1,2차원 배열의 종류와 특징


가장 기본적인 배열로, 한 줄로 나열된 형태임. 배열 이름, 킷값(=key,첨자), 저장된 값으로 구성 된다

1) 스칼라 배열 
킷값으로 숫자를 사용하는 배열 
예시: $ar[1] = 'abc'; (1번 칸에 'abc' 저장)

2) 연관 배열 
킷값으로 문자를 사용하는 배열. 의미를 파악하기 쉽다
예시: $row['이름'] = '관우';

3) 배열 생성 함수: array()

array() 함수를 사용하면 배열을 한 번에 만들 수 있다. 킷값을 직접 정할 수도 있고, 생략하면 0부터 숫자가 자동으로 붙는다
$ar1 = array(1, 2, 3); → 0번: 1, 1번: 2, 2번: 3 저장
$ar2 = array("a" => "apple", "b" => "banana"); → 'a'칸에 apple 저장

4) 배열 전용 반복문: foreach
배열의 처음부터 끝까지 데이터를 하나씩 꺼내올 때 사용함. for문과 달리 배열이 몇 칸인지 몰라도 알아서 끝까지 동작함

foreach ($배열 as $값) { ... }

foreach ($배열 as $키 => $값) { ... }

5) 2차원 배열

배열 안에 또 배열이 들어있는 구조. 표(Table) 형태처럼 **가로(행)**와 **세로(열)**의 개념이 생긴다



예시 $ar[0][0] = 0행과 0열이 만나는 곳은 a 지점이다. $ar[0][0] = a


예시


코드



1. $ar[0] 은? 0번 줄에 있는 데이터 전체를 가져오는 것

결과



코드

1. $ar[0] ['이름'] 은? 0번 줄을 먼저 찾고, 그중에서 '이름' 칸에 적힌 값만 콕 집어서 가져옴

결과


 

ar01.php 실습과 해설

<?php
  $ar1 = array(1, 2, 3); -- 기본적인 숫자 인덱스 배열 (0, 1, 2 자동 할당)
  $ar2 = array(3 => "abc", 4 => "def", "ghi", 8 => "비행기", "사람"); -- 3,4번 다음에 "ghi"에 자동으로 5번 지정, 8번 지정("비행기") 그 다음에 "사람"에 자동으로 9번 지정
  $ar3 = array("a" => "ab", "k" => "a2", 23, "z" => 34, "bb");

  $a1 = count($ar1); -- count() 함수로 배열 요소의 개수 파악 $ar1은 위에서 3개였으므로 3이 된다 
  $a2 = count($ar2);
  $a3 = count($ar3);

  print_r($ar1); echo("- count : $a1<br>"); -- *print_r 은 사람이 읽기 편한 형태로 출력해주는 함수
  print_r($ar2); echo("- count : $a2<br>");
  print_r($ar3); echo("- count : $a3<br>");

  echo "<hr><br>";
  echo "<hr>";
  
  show_source(__FILE__);
?>

 

참고사항



* "ghi"는 키값을 지정하지 않았으므로 5로 자동 지정되고, "사람" 도 8 다음 숫자인 9로 자동으로 지정된다 

 

ar02.php 실습과 해설

<?php
  $ar = array(1, 2, 3, 4, 5);

반복문 시작
  for ($i = 0; $i < count($ar); $i++) { - $i = 순서번호, 컴퓨터는 숫자를 0번부터 세기 때문에 0부터 시작함
++: 현재 값에 1을 더하라라는 뜻으로 반복문이 한 번 끝날 때마다 $i의 값을 1씩 올린다
* 해석: 0번 부터 시작해서 count 함수에서 나온 숫자인 5개보다 작을때까지 번호를 1씩 늘려 반복해라
      $value = $ar[$i]; - 상자의 $i번째 칸에 들어있는 숫자를 꺼내서 $value라는 변수에 담는다
      echo "value : {$value}<br>"; - "value : 숫자" 형태로 화면에 출력한다
  }
  echo "<hr>"; - 화면에 가로 선을 하나 긋는다 
  show_source(__FILE__); - 지금 작성된 이 소스 코드 전체를 화면에 보여주는 함수
?>

 

ar02-1.php 실습과 해설

<?php
  $ar = array(1, 2, 3, 4, 5);

  $i = 0; - 시작 번호를 0으로 정한다 
  while ($i < count($ar)) { - $i가 상자 개수(5)보다 작을 때까지만 반복하라고 시킨다
      $value = $ar[$i]; - 현재 번호($i)에 맞는 숫자를 꺼내서 출력함
      echo "value : {$value}<br>";
      $i++; - 출력 후 번호($i)를 1 늘린다 * $i++ 이 코드를 안 쓰면 $i가 영원히 0이라서 무한 반복에 빠지니 주의해야 함
  }

  echo "<hr>";
  show_source(__FILE__);
?>

 

ar03.php 실습과 해설

<?php

  $ar = array( - $ar이라는 큰 상자 안에 3개의 작은 상자(학생 정보)를 넣는다
각 작은 상자 안에는 '학번', '이름', '학과'라는 이름표가 붙은 데이터가 들어있다
    array("학번" => "915301", "이름" => "공융", "학과" => "화학"),- 0번 방
    array("학번" => "915302", "이름" => "사마간", "학과" => "화학"), - 1번 방
    array("학번" => "925303", "이름" => "단규", "학과" => "화학")  - 2번 방
  );

  $count = count($ar); - 작은상자에는 학번, 학과, 화학 이 있으므로 여기서는 3개가 있다 

  for ($i = 0; $i < $count; $i++) { -  0번 학생부터 3보다 작을 때까지(0, 1, 2) 반복
      
      echo "row = $i : {$ar[$i]['학번']} - {$ar[$i]['이름']} - {$ar[$i]['학과']}<br>"; - 화면에 내용을 출력함
  } - $ar[$i] : i번째 학생 상자를 선택  ['학번'], ['이름'], ['학과'] : 그 상자 안에서 해당 이름표가 붙은 값을 가져옴

  echo "<hr>"; - 가로 선을 긋는다

  show_source(__FILE__); - 소스 코드를 화면에 보여준다
?>

 

ar03-1.php 실습과 해설

<?php

  $ar = array( - 큰 상자($ar) 안에 작은 상자 3개(공융, 사마간, 단규 데이터)를 준비
    array("학번" => "915301", "이름" => "공융", "학과" => "화학"),
    array("학번" => "915302", "이름" => "사마간", "학과" => "화학"),
    array("학번" => "925303", "이름" => "단규", "학과" => "화학")
  );

  $count = count($ar); - 큰 상자 속에 덩어리가 몇 개(3개)인지 세어서 $count에 저장함

  $i = 0; - [시작 번호] 0번 방부터 시작하겠다고 정함

  while ($i < $count) { - 번호($i)가 전체 개수(3)보다 작을 때(0, 1, 2)까지만 반복
      i번째 작은 상자를 열어서 '학번', '이름', '학과'를 화면에 뿌립니다.
      echo "row = $i : {$ar[$i]['학번']} - {$ar[$i]['이름']} - {$ar[$i]['학과']}<br>"; -  i번째 작은 상자를 열어서 '학번', '이름', '학과'를 화면에 뿌림
      
      $i++; -  한 줄 처리했으니 번호($i)를 1 늘림
  }

  echo "<hr>";
  show_source(__FILE__);
?>