Web
Php 분류

PHP 배열의 기초

작성자 정보

  • console 작성
  • 작성일

컨텐츠 정보

본문

배열(array)이란?

PHP에서 배열(array)은 맵(map)으로 이루어진, 순서가 있는 집합을 의미합니다.

맵(map)은 한 쌍의 키(key)와 값(value)으로 이루어져 있습니다.

이때 배열을 구성하는 각각의 맵을 배열 요소(array element)라고 합니다.

배열은 데이터를 많이 다뤄야 하는 경우 사용할 수 있는 가장 기본적인 자료 구조입니다.


PHP 배열에는 다음과 같이 세 가지 종류가 있습니다.

 

1. 1차원 배열

2. 다차원 배열

3. 연관 배열 


1차원 배열

1차원 배열은 가장 기본적인 배열로 다음과 같은 문법에 따라 선언됩니다.

문법

$배열이름 = array();

 

PHP에서는 array()라는 함수를 이용해 배열을 생성합니다.

배열 이름은 배열을 선언한 후에 해당 배열에 접근하기 위해 사용합니다.


배열 요소의 참조

PHP에서는 배열 요소에 접근하기 위해 인덱스(index)를 사용합니다.

PHP는 대부분의 다른 프로그래밍 언어와 마찬가지로 0부터 시작하는 숫자 인덱스를 지원합니다.

 

배열의 각 요소를 참조하고 싶을 때는 [] 연산자를 사용합니다.

문법

$배열이름[인덱스]

 

PHP에서는 인덱스로 숫자뿐만 아니라 문자열을 사용할 수도 있습니다.

 

인덱스로 문자열을 사용하는 배열을 연관 배열(associative array)이라고 합니다.

연관 배열에 대한 더 자세한 사항은 PHP 연관 배열 수업에서 확인할 수 있습니다.

 

PHP 연관 배열 수업 확인 =>


배열 요소의 추가

PHP에서는 인덱스를 이용하여 배열에 요소를 추가할 수 있습니다.

 

다음 예제는 배열을 생성하고, 인덱스를 이용하여 배열 요소를 추가하는 예제입니다.

예제

$arr = array();     // 배열 생성
$arr[0] = "apple";  // 배열 요소 추가
$arr[1] = "banana";
$arr[2] = "orange";

코딩연습 ▶

 

또한, 배열을 생성하면서 동시에 배열 요소를 초기화할 수 있습니다.

문법

$배열이름 = array(배열요소1, 배열요소2, ...);

 

이 방법을 사용하면 초기화 리스트에 따라 각각의 배열 요소가 순서대로 추가된 배열이 생성됩니다.

 

다음 예제는 앞선 예제와 같은 배열을 생성과 동시에 초기화하는 예제입니다.

예제

 

$arr = array("apple""banana""orange");  // 배열 생성과 동시에 초기화

 

코딩연습 ▶

 

만약 해당 배열이 존재하지 않으면, 해당 이름으로 새로운 배열을 만든 후에 배열 요소를 추가합니다.

예제

$arr[0] = "apple";  // 배열이 존재하지 않으므로, 먼저 배열을 생성한 후에 요소가 추가됨.
$arr[1] = "banana";
$arr[2] = "orange";

코딩연습 ▶

 

이때 배열 요소의 인덱스를 생략할 수 있는데, 이 경우에는 인덱스가 0부터 시작하여 1씩 증가하며 순서대로 저장됩니다.

예제

$arr[] = "apple";  // 배열 인덱스를 생략하여, 순서대로 배열에 추가됨.
$arr[] = "banana";
$arr[] = "orange";

코딩연습 ▶

 

코드를 명확하게 하고 오류를 피하기 위해서는 배열을 먼저 선언해주는 것이 바람직합니다. 

배열의 홀(hole)

PHP에서는 배열의 특정 인덱스에만 배열 요소를 추가할 수 있습니다.

예제

$arr = array();            // 배열의 생성

$arr[10= "banana";       // 인덱스 10에만 배열 요소를 추가함.

 

var_dump($arr);

var_dump($arr[0]);         // NULL

var_dump(isset($arr[0]));  // false

var_dump(isset($arr[10])); // true

코딩연습 ▶

 

위의 예제에서 배열 요소가 존재하는 인덱스는 10뿐이며, 나머지 인덱스에는 배열 요소가 존재하지 않습니다.

이렇게 인덱스에 대응하는 배열 요소가 없는 부분을 배열의 홀(hole)이라고 합니다.

PHP에서 이러한 배열의 홀(hole)을 참조하게 되면. 초기화되지 않은 변수를 참조할 때처럼 NULL을 반환합니다.

 

isset() 함수는 인수로 전달받은 변수가 초기화되어 있는지를 확인해 줍니다.

루프를 이용한 배열로의 접근

for 문을 사용하면 배열의 인덱스를 이용하여 더욱 쉽고 간단하게 배열 요소에 접근할 수 있습니다.

예제

$arr = array("apple""banana""orange");
for($i 0$i < count($arr)$i++){
    echo $arr[$i]."<br>";
}

코딩연습 ▶

 

count() 함수는 배열의 모든 요소의 개수를 반환하는 함수입니다.

 

하지만 앞서 살펴본 홀(hole)을 가지는 배열에서는 for 문을 사용하면 모든 배열 요소에 접근할 수 없습니다.

따라서 PHP에서는 특별한 반복문인 foreach 문을 제공하여 for 문보다 간편하게 배열 요소에 접근할 수 있도록 해줍니다.

예제

$arr = array(); // 배열의 생성 

$arr[2= "apple";

$arr[3= "banana";

$arr[4= "orange";

// $arr[0]과 $arr[1]은 배열의 홀(hole)이 됨.

 

for ($i = 0$i < count($arr); $i++) {

    echo "\\$arr[{$i}] : ".$arr[$i]."<br>";

}

 

foreach ($arr as $element){

    echo $element."<br>";

}

코딩연습 ▶

 

위의 예제에서 알 수 있듯이 count() 함수는 배열 요소의 개수를 계산할 때 배열의 홀(hole)을 포함하지 않습니다.

따라서 홀을 가지는 배열에서는 정확한 배열의 길이를 구할 수 없습니다.

하지만 foreach 문을 사용하면 예제와 같이 홀이 아닌 배열 요소에만 정확히 접근할 수 있습니다.

 

foreach 문에 대한 더 자세한 사항은 PHP 반복문 수업에서 확인할 수 있습니다.

관련자료

댓글 0
등록된 댓글이 없습니다.
Php 24 / 1 페이지
RSS
  • 그누보드 썸네일 이미지 화질 개선 방법
    등록자 PixelProphet
    등록일 01.10 조회 2731

    Php 그누보드에서 이미지를 올릴때, 간혹 이미지 화질이 떨어져 보이는 현상이 있습니다.... 이럴 때 제가 찾아본 방법 중에 가장 쉽게 해결 할 수 …

  • PHP 배열의 기초
    등록자 console
    등록일 01.05 조회 2527

    Php 배열(array)이란? PHP에서 배열(array)은 맵(map)으로 이루어진, 순서가 있는 집합을 의미합니다. 맵(map)은한 쌍의 키(key…

  • PHP 기타 제어문
    등록자 console
    등록일 01.05 조회 2555

    Php 루프의 제어 일반적으로 조건식의 검사를 통해 루프로 진입하면,다음 조건식을검사하기 전까지 루프 안에 있는 모든 명령문을 실행합니다. 사용자는 c…

  • PHP 반복문
    등록자 console
    등록일 01.05 조회 2531

    Php 반복문 반복문이란 프로그램 내에서 같은 명령을 일정 횟수만큼 반복하여수행하는명령문입니다. 프로그램이 처리하는 대부분의코드는 반복적인 형태가 많으…

  • PHP 조건문
    등록자 console
    등록일 01.05 조회 2379

    Php PHP 표현식 표현식(expressions)은 PHP에서 가장 중요한 구성요소입니다. 표현식이란 모든 것이 값을 갖는다는 의미이며, PHP에서 …

  • PHP 기타 연산자
    등록자 console
    등록일 01.05 조회 2346

    Php 삼항 연산자(ternaryoperator) 삼항 연산자는 유일하게 피연산자를 세 개나 가지는 조건 연산자입니다. 삼항 연산자의 문법은 다음과 같…

  • PHP 비트 연산자
    등록자 console
    등록일 01.05 조회 2554

    Php 비트 연산자(bitwise operator) 비트 연산자는 논리 연산자와 비슷하지만, 비트(bit) 단위로 논리 연산을 수행합니다. 또한, 비트…

  • PHP 논리 연산자
    등록자 console
    등록일 01.05 조회 2610

    Php 논리 연산자(logical operator) 논리 연산자는 논리식을 판단하여, 참(true)과 거짓(false)을 반환합니다. and, or, …

  • PHP 비교 연산자
    등록자 console
    등록일 01.05 조회 2631

    Php 비교 연산자(comparisonoperator) 비교 연산자는피연산자사이의 상대적인 크기를 판단하여,참(true)과 거짓(false)을 반환합니…

  • PHP 증감연산자
    등록자 console
    등록일 01.05 조회 2238

    Php 증감 연산자(increment and decrement operator) 증감 연산자는피연산자를 1씩 증가 혹은 감소시킬 때사용하는 연산자입니다…

  • PHP 대입연산자
    등록자 console
    등록일 01.05 조회 2307

    Php 대입 연산자(assignment operator) 대입 연산자는변수에 값을 대입할 때 사용하는 이항 연산자이며, 피연산자들의 결합 방향은 오른쪽…

  • PHP 산술연산자
    등록자 console
    등록일 01.05 조회 2308

    Php 연산자(operator) PHP는다양한 연산을 위해많은 종류의 연산자를 제공하고 있습니다. 산술 연산자(arithmetic operator) 산…

  • PHP 타입변환
    등록자 console
    등록일 01.05 조회 2712

    Php 자동 타입 변환(type juggling) PHP에서는 변수를 선언할 때 타입을 명시할 필요가 없습니다. 왜냐하면, PHP에서 변수의 타입은 해…

  • PHP 기본타입
    등록자 console
    등록일 01.05 조회 2329

    Php 기본 타입 타입(data type)이란 프로그램에서 다룰 수 있는 값의 종류를 의미합니다. PHP에서는여러 가지 형태의 타입을 미리 정의하여제공…

  • PHP 상수
    등록자 console
    등록일 01.05 조회 2529

    Php 상수(constant) 상수(constant)란 변수와 마찬가지로 데이터를 저장할 수 있는 메모리 공간을 의미합니다. 하지만 상수가 변수와 다른…