PHP 배열 · 10 min read · Nov 18, 2025
PHP에서 배열에 대한 자세한 가이드
PHP에서 배열에 대한 자세한 가이드
좋은 하루 되세요!
여기 Fast PHP Articles 시리즈의 또 다른 기사가 있습니다. 오늘은 배열에 대해 논의할 것입니다. 배열의 구문, 다양한 유형, 배열과 관련된 다양한 작업을 신속하게 수행하는 데 도움이 되는 다양한 내장 배열 함수 및 PHP에서 배열 사용을 설명하는 다양한 실용적인 예를 배울 것입니다.
이 기사를 읽고 나면 다음을 할 수 있어야 합니다:
- 배열 정의하기
- 다양한 유형의 배열 사용하기
- list(), each(), var_dump, print_r, var_export()와 같은 배열 관련 다양한 내장 함수 사용하기
- 배열을 사용하여 기본 및 복잡한 PHP 코드 작성하기.
- 다차원 배열 작업하기
- 다양한 예제를 통해 foreach 루프 이해하기
하지만 배열에 대해 논의하기 전에 매우 흥미로운 이야기를 들려드리겠습니다.
제 사무실 근처에 영어 영화를 잘 보관하고 있는 DVD 가게가 있습니다. 액션 영화, 공포 영화, 로맨틱 영화(hhhhh - ‘깊은 숨’), 드라마, 연극, 종교 영화 등 거의 모든 장르의 영화를 찾을 수 있습니다….
가게 주인은 교육을 많이 받지 않은 사람입니다. 하지만 그는 20,000개 이상의 DVD를 매우 쉽게 관리할 수 있으며, 당신이 영화 제목을 말하는 즉시 영화를 꺼낼 수 있습니다… 음, 그가 어떻게 그렇게 할 수 있을까요?
글쎄요, 저는 그의 전략을 분석했고, 아이템을 쉽게 처리하기 위한 특별한 방법으로 정리하는 큰 비밀을 공개하겠습니다.
그는 위에서 논의한 것처럼 모든 DVD를 다양한 장르로 분류하고, 가게의 다양한 선반에 특별한 ID/코드/번호를 부여했습니다. 그는 관련 영화를 같은 선반에 보관합니다. 각 선반은 로맨틱 영화, 공포 영화 등과 같은 카테고리 이름으로 레이블이 붙어 있습니다… 각 DVD는 해당 DVD를 추적하는 데 사용할 수 있는 고유한 ID를 가지고 있습니다.
고객이 더블 팀이라는 영화를 요청하면, 그는 빠르게 액션 영화로 레이블이 붙은 선반으로 이동한 다음, ‘D’로 레이블이 붙은 행으로 이동합니다. 이는 ‘D’로 시작하는 영화 제목을 의미하며, 그런 다음 ‘D’ 다음에 ‘O’가 오는 순서로 빠르게 이동하여 DOUBLE TEAM 영화를 찾습니다. 그는 유명한 DVD의 ID를 기억하고 있어서, 당신이 그에게 요청하면 그는 ‘이 이름으로 레이블이 붙은 선반에서 DVD # xxxx를 선택하세요‘라고 말하고, 당신은 그곳에서 직접 선택할 수 있습니다.
그리고 이 모든 것이 너무 빨리 이루어져서, 방대한 컬렉션에서 특정 DVD를 이렇게 빨리 찾는 것은 마법처럼 보입니다. 그래서 DVD 가게를 운영하게 된다면 다음과 같이 DVD를 정리하세요:
a) 유사한 DVD를 같은 선반에 보관하세요.
b) 각 카테고리를 이름으로 레이블하세요.
c) DVD의 행에 레이블을 붙이세요.
d) 모든 DVD에 ID를 부여하세요.
이 이야기를 통해 교훈을 얻고 컴퓨터 세계로 돌아가 봅시다.
프로그래밍에서는 때때로 서로 다른 관련 값을 처리해야 하는 경우가 있습니다. 예를 들어, 상위 5명의 학생 이름, 포르쉐 자동차 모델, 양식에서 제출된 변수 등입니다. 이러한 상황에서는 유사한 유형의 데이터를 효율적이고 신속하게 처리하기 위해 코드를 정리하고 논리를 구성해야 합니다. 이를 위해 DVD 판매자의 논리를 사용할 수 있습니다:
- 데이터를 서로 묶인 다양한 카테고리로 구성합니다.
- 행에 레이블을 붙입니다.
- 각 데이터 값에 고유한 ID를 부여합니다.
이를 수행하는 다양한 기술이 있을 수 있으며 그 중 하나가 배열입니다.
배열의 원시 정의: 유사한 데이터/같은 관심의 데이터를 함께 보관하여 더 나은 조직 및 처리를 돕는 상자
적절한 배열 정의:
“같은 레이블 아래 다양한 변수를 모아 값을 정리하고 처리하기 쉽게 유지하는 것”
네, 이것은 배열에 대한 제 자신의 정의이며, 핵심 개념이 올바르고 내가 말하는 내용을 이해할 수 있는 한 내 방식으로 무엇이든 정의할 권리가 있습니다.
일부는 배열을 “자신 안에 더 많은 변수를 포함하는 일종의 변수“로 정의하기도 합니다.
PHP는 일반 변수와 배열을 약간 다르게 처리한다는 점을 기억하세요.
배열 구문:
$arrayName = array ("value1?","value2?","value3?");우리는 변수와 마찬가지로 배열 이름을 부여하기 위해 $ 기호를 사용하며, 그 다음에 등호 기호와 키워드 ‘array’를 사용하여 파서에게 배열 작업을 하고 있음을 알립니다. 그 후 괄호 안에 다양한 값을 넣고 각 값은 쉼표로 구분된 따옴표로 묶입니다.
배열 정의 및 출력 예제:
$Top3Sites = array (“fastcreators.com”,”howtoforge.com”,”scriptsbible.com”);
print_r($Top3Sites);
?>
위 프로그램의 출력은 다음과 같습니다.
Array
(
[0] => fastcreators.com
[1] => howtoforge.com
[2] => scriptsbible.com
)
배열을 출력하기 위해 print_r를 사용해야 한다는 점에 유의하세요. echo 또는 print 함수로는 배열을 출력할 수 없습니다(두 함수 모두 출력을 표시하는 데 사용됨). 그러나 배열의 단일 항목을 표시하는 데는 echo 또는 print를 사용할 수 있습니다. 예를 들어:
echo $Top3Sites[0]; //fastcreators.com인덱스 번호는 0부터 시작하고 1이 아닙니다.
배열의 각 값은 인덱스 번호로 알려진 고유한 ID를 받습니다.
다른 방법은 세 개의 서로 다른 변수를 정의한 다음 값을 할당하고 이를 표시하기 위해 다양한 문을 사용하는 것입니다. 주장을 위해 세 개의 값의 경우에는 허용될 수 있지만, 50개 또는 100개의 값을 처리할 때는 거부될 것입니다.
따라서 배열은 더 잘 정리되어 있으며, 빠른 처리를 위해 동일한 레이블 아래 다양한 값을 수집하는 데 유용합니다.
위의 예제에서는 한 번의 단계에서 배열을 정의하고 값을 할당했지만, 다음과 같이 할 수도 있습니다:
$students = array(); //배열 정의
//값 할당 $students[0] = “Haroon”;
$students[1] = “Celine”;
$students[3] = “Jennifer”;
$students[4] = “Bobby”;
?>배열의 유형:
PHP에는 세 가지 유형의 배열이 있습니다:
a) 숫자 배열: 숫자 ID 키가 있는 배열.
b) 연관 배열: 각 ID 키가 값과 연결된 배열.
c) 다차원 배열: 하나 이상의 배열을 포함하는 배열.
이제 다양한 유형의 배열에 대해 자세히 논의해 보겠습니다.
숫자 배열: 숫자 배열은 각 배열 항목을 식별하기 위해 정수/숫자를 인덱스 번호로 사용합니다. 위에서 논의한 예제는 각 항목에 대한 인덱스 번호로 정수 값을 가지므로 숫자 배열입니다.
$colours = array(“white”,”black”,”blue”);
print_r($colours);/*
출력은 다음과 같습니다.
Array
(
[0] => white
[1] => black
[2] => blue
)
*/
?>
위의 출력에서 흰색, 검은색 및 파란색의 인덱스 번호는 각각 0, 1, 2로, 이는 숫자 값이므로 이러한 배열을 숫자 배열이라고 부릅니다.
연관 배열:
때때로 인덱스 번호 대신 인덱스 이름을 사용하는 것이 더 좋습니다. 예를 들어, 세 학생의 이름과 번호를 저장하려면 각 학생의 이름을 배열의 인덱스 값으로 사용하고 그의 번호를 값으로 사용하는 것이 가장 좋은 선택입니다. 아래 예를 보세요,
$students[‘Anna’] = 90;
$students[‘Maria’] = 60;
$students[‘Jennifer’] = 40;
?>
POST 또는 GET 방법을 사용하여 양식을 제출하면 각 양식 필드의 이름을 배열 인덱스로 하고 그 값을 인덱스 값으로 포함하는 유사한 연관 배열을 수신 페이지에서 얻습니다. 몇 개의 필드가 있는 HTML 양식을 만들고 이를 게시한 다음 수신 페이지에서 전역 배열을 인쇄해 보세요.
print_r($_POST);
print_r($_GET);
그러면 연관 배열을 볼 수 있습니다.
연관 배열은 특히 복잡한 양식 제출 및 데이터베이스의 동적 값을 처리할 때 정보를 처리하고 다루기 더 쉽습니다.
다차원 배열:
다차원 배열은 자신 안에 배열을 포함할 수 있으며, 하위 배열은 그 안에 더 많은 배열을 포함합니다.
다차원 배열의 개념을 이해하기 위해 실제 예로 넘어가 보겠습니다:
David는 Richie와 Mason이라는 두 아들이 있습니다. Richie는 Sue와 Natasha라는 두 딸이 있고, Mason은 Nichole, Salma, Amber라는 세 딸이 있습니다.
이제 그들의 가족 트리는 다음과 같습니다:

PHP에서 다차원 배열로 David의 가족 트리를 표시하려면 다음과 같이 배열을 정의할 수 있습니다:
$david = array
(
“richie”=>array
(
“Sue”,
“Natasha”
),
“Mason”=>array
(
“Nichole”,
“Salma”,
“Amber”
)
);이렇게 다차원 배열을 사용하여 데이터를 정리할 수 있습니다. 양식 필드의 배열을 제출한 다음 전역 배열을 인쇄하여 출력을 확인해 보세요. 그러면 더 많은 하위 배열을 포함하는 다차원 배열로 전역 배열을 얻을 수 있습니다.
FOREACH 루프: 이전 기사 “PHP의 루프”에서 FOREACH 루프에 대해 나중에 논의하겠다고 남겼던 것을 기억하신다면, 이제 그 시간을 가졌습니다.
Foreach 루프는 배열을 위해 사용되며 배열에서 다음 값을 가져와 필요한 작업을 수행합니다.
foreach 루프의 기본 구문은 다음과 같습니다:
FOREACH 구문:
foreach ( $arrayname as $temporaryVarName ) { // foreach 루프 본문
//$temporaryVarName은 배열 값을 보유하며
//각 루프 실행 시 배열에서 다음 사용 가능한 값을 선택합니다.
}
foreach 루프의 작동을 깊이 이해하기 위해 프로그램을 작성해 보겠습니다:
$students = array(); // 학생 배열 정의
//값 할당
$students[0] = “david”;
$students[1] = “kevin”;
$students[2] = “julie”;
$students[3] = “nayyar”;
/
이제 foreach 루프를 사용하여 모든 학생 이름 즉 배열 값을 한 번에 표시합니다. /
foreach ( $students as $std_name ) {
echo $std_name . “\n”;
}
?>
위 코드에서 $std_name은 배열의 각 값을 가져오는 임시 변수로 작동합니다. 각 루프 실행 시 배열의 다음 사용 가능한 값이 $std_name의 기존 값을 덮어쓰고, 그 후 $std_name은 현재 가져온 값으로 포인팅합니다. 따라서 배열 값을 하나씩 탐색하는 것과 같습니다.
위 코드의 출력은 다음과 같습니다:
david
kevin
julie
nayyar
우리는 \n(줄 바꿈)을 사용하여 각 이름을 다음 줄에 표시합니다.
foreach 루프는 다음에 사용할 수 있는 값이 없을 때 종료됩니다. 즉, 배열의 마지막 값인 NAYYAR에 도달했을 때입니다.
필요한 경우 언제든지 break 문을 사용하여 루프를 중단할 수 있습니다(우리는 PHP에서 SWITCH를 사용한 의사결정에서 break 문에 대해 논의했습니다).
예를 들어, 이름이 julie인 경우 루프를 중단하려면 위 코드에 IF 문을 포함할 수 있습니다:
foreach ( $students as $std_name ) {
if($std_name == “julie”) break;
echo $std_name . “\n”;
}
?>
배열과 함께 작업하여 빠른 처리를 제공하는 몇 가지 매우 유용한 함수가 있습니다. 그 중 몇 가지는 아래에서 논의됩니다:
중요한 배열 함수:
1) print_r 함수의 출력 저장하기: 우리는 이전에 배열 값을 표시하기 위해 print_r를 사용했지만, print_r에 추가 인수를 추가하여 출력을 변수에 저장할 수 있습니다. 예를 들어:
$myarray = array(“Apples”, “Oranges”, “Pears”);
$output = print_r($myarray, true);
print $output;
?>
print_r는 TRUE - 두 번째 인수를 사용하지 않으면 배열 자체를 표시합니다. 그러나 TRUE가 제공되면 출력을 변수에 저장합니다.
2) 배열의 크기 찾기: 배열의 크기는 배열이 포함하는 값의 수를 의미합니다… 배열의 값 수를 찾으려면 COUNT 함수를 다음과 같이 사용할 수 있습니다:
$myarray = array(“Apples”, “Oranges”, “Pears”);
$size = count($myarray);
print $size; // 3
?>
위 프로그램은 배열에 세 개의 요소가 있기 때문에 3을 표시합니다.
3) var_dump 함수:
print_r()와 유사한 함수인 var_dump()가 있습니다. 이는 대체로 동일한 작업을 수행하지만,
a) 변수의 크기를 출력합니다.
b) 객체의 비공개 데이터를 출력하지 않습니다.
c) 출력을 반환하기 위해 두 번째 매개변수를 전달할 수 있는 옵션이 없습니다.
예를 들어, 첫 번째 스크립트를 print_r() 대신 var_dump()를 사용하도록 변경하면 다음과 같은 출력이 제공됩니다:
array(3) {
[0]=>
string(6) “Apples”
[1]=>
string(7) “Oranges”
[2]=>
string(5) “Pears”
}
여기에서 var_dump()가 배열에 세 개의 값이 있음을 알려주고 각 문자열의 길이도 출력하는 것을 볼 수 있습니다. 교육 목적으로는 var_dump()가 변수 크기를 보여주기 때문에 더 좋지만, 자신의 작업에서는 print_r()를 사용하는 것이 좋습니다.
4) var_export 함수:
var_dump() 및 print_r()와 유사한 함수인 var_export()도 있습니다. 그러나 var_export()의 주요 차이점은 변수를 PHP 코드로 사용할 수 있는 스타일로 출력한다는 것입니다. 예를 들어, 테스트 스크립트에서 print_r() 대신 var_export()를 사용했다면 다음과 같은 출력을 얻었을 것입니다:
array (
0 => ‘Apples’,
1 => ‘Oranges’,
2 => ‘Pears’,
)
마지막 요소 뒤에 추가 쉼표가 있지만, PHP는 이를 무시하며, 이 정보를 자신의 스크립트에 직접 복사하여 붙여넣을 수 있습니다. 다음과 같이:
$foo = array (
0 => ‘Apples’,
1 => ‘Oranges’,
2 => ‘Pears’,
);
?>
5) array_shift 함수:
array_shift 함수는 배열의 첫 번째 요소를 배열에서 제거하고 수신 변수에 저장합니다.
예를 들어, 이전 프로그램에서 Apples를 제거하고 다른 변수에 저장하려면 다음과 같은 프로그램을 작성할 수 있습니다:
$myarray = array(“Apples”, “Oranges”, “Pears”);
$fruit = array_shift($myarray);
echo $fruit; // Apples
print_r($myarray); // Apples 없이 Oranges와 Pears가 표시됩니다.
?>
다차원 배열을 양식에서 게시하고, 메인 배열에서 하위 배열을 가져오고 싶을 때 매우 유용한 함수입니다. 그러나 array_shift를 사용하여 메인 배열에서 하위 배열을 가져올 때 수신 변수($fruit에서 이전)는 일반 변수가 아니라 배열이 됩니다.
또한 PHP 공식 매뉴얼에서 array_shift와 관련된 세 가지 다른 유용한 함수인
array_unshift
array_pop
array_push를 공부할 것을 권장합니다.
PHP는 매우 유용한 배열 함수의 긴 목록을 제공하며, 이를 PHP 공식 매뉴얼에서 찾을 수 있습니다.
여기서 언급하고 싶은 한 가지는 foreach 루프가 배열을 처리하는 유일한 방법이 아니라는 것입니다. FOR 루프나 list() 및 each() 함수를 사용하여도 가능합니다.
배열을 처리하려면 배열의 값 총 수, 즉 배열의 크기를 찾아야 합니다. 다음과 같이:
for ($i = 0; $i < count($array); ++$i) {
print $array[$i];
}
?>
이것은 인덱스 번호로 정수 값을 가진 숫자 배열에 잘 작동하지만, 연관 배열에는 적합하지 않습니다.
LIST() 함수로 배열 처리:
PHP는 배열 값을 쉽게 빠르게 탐색할 수 있는 LIST() 함수를 제공합니다:
while (list($var, $val) = each($array)) {
print “$var is $val\n”;
}
?>
List()는 array()의 반대 작업을 수행하는 함수입니다. 배열을 가져와 개별 변수로 변환합니다. Each()는 배열을 매개변수로 받아 현재 키와 값을 반환한 다음 배열 커서를 진행합니다. “배열 커서”는 현재 읽고 있는 배열의 요소를 나타내는 기술 용어입니다. 모든 배열에는 커서가 있으며 자유롭게 이동할 수 있습니다. 위의 while 루프에서 사용되며, 배열을 반복하는 데 필요합니다. 처음에는 each()가 첫 번째 요소를 반환하고, 그 다음 두 번째 요소, 세 번째 요소 등을 반환하며, 더 이상 요소가 없을 때 false를 반환하고 루프를 종료합니다.
첫 번째 줄의 의미는 “배열의 현재 요소를 가져와 그 키를 $var에 할당하고 그 값을 $val에 할당한 다음 배열 커서를 진행합니다”입니다.
배열 요소의 인덱스와 값을 모두 가져오기: 각 배열 요소의 인덱스 이름과 값을 읽고 싶다면 다음과 같이 foreach 루프를 사용할 수 있습니다:
foreach ($array as $key => $val) {
print “$key = $val\n”;
}
?>
연관 배열을 다룰 때 매우 유용합니다.
배열은 매우 깊은 주제이며 논의할 것이 더 많고, 배열에 대한 완전한 책을 쉽게 쓸 수 있습니다. 그러나 이 기사의 목적은 배열에 대한 매우 확고한 이해와 배열에 정보를 저장하고 처리하는 다양한 방법을 제공하는 것입니다. 배열에 대해 특정 질문이 있으시면 언제든지 이메일을 보내거나 이 기사에 댓글을 남겨주세요.
긴 기사이므로 몇 가지 오타가 있을 수 있습니다. 발견하시면 저에게 알려주시면 수정하겠습니다. 다시 만날 때까지 연습하시고 건강하세요…
- Haroon Ahmad
이 시리즈의 다른 기사:
FAST PHP 튜토리얼 (1부)
Windows에 PHP 설치하는 방법 (Fast PHP 튜토리얼 2부)
Linux에 PHP 설치하는 방법
Windows에 Apache 설치하는 방법
Windows에 PHP, MySQL, Apache 설치를 위한 쉬운 설치 프로그램
PHP 프로그래밍 기초
PHP의 연산자
PHP에서 IF-ELSE를 사용한 의사결정
PHP 스위치 문을 사용한 의사결정
PHP의 루프
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.