📚 PHP 초급 - 6주차: 배열 - 04 배열 조작 함수 (정렬, 추가/삭제 등)

2025. 6. 30. 17:24프로그램/PHP 초급

📚 PHP 초급 - 6주차: 배열 - 04 배열 조작 함수 (정렬, 추가/삭제 등)

📚 PHP 초급 - 6주차: 배열 - 04 배열 조작 함수 (정렬, 추가/삭제 등)



안녕하세요! #PHP 초급 강좌 6주차의 마지막 시간입니다. 지난 시간에는 #PHP #배열 의 강력한 기능인 #다차원배열 에 대해 학습했는데요. 오늘은 PHP 배열을 더 효율적으로 다루고 활용할 수 있도록 돕는 다양한 배열 조작 함수들에 대해 알아보겠습니다. 배열을 정렬하거나, 요소를 추가 및 삭제하는 등 실전에서 자주 사용되는 필수 함수들을 함께 살펴보시죠!



1. 배열 정렬 함수

PHP는 배열을 다양한 기준으로 정렬할 수 있는 여러 함수를 제공합니다. 주로 값 또는 키를 기준으로 오름차순/내림차순 정렬을 합니다.

 

1.1. 값(Value)을 기준으로 정렬

  • sort(): 배열의 값을 오름차순으로 정렬합니다. 인덱스 배열의 키는 재설정(0부터 순차적으로)됩니다.
  • rsort(): 배열의 값을 내림차순으로 정렬합니다. 인덱스 배열의 키는 재설정됩니다.
PHP
 
<?php
$numbers = [4, 2, 8, 1, 5];
$fruits = ["orange", "banana", "apple", "grape"];

echo "<h3>값 기준 정렬</h3>";

// sort() - 오름차순 정렬
sort($numbers);
echo "sort() 후 numbers: ";
print_r($numbers); // Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 [4] => 8 )
echo "<br>";

sort($fruits);
echo "sort() 후 fruits: ";
print_r($fruits); // Array ( [0] => apple [1] => banana [2] => grape [3] => orange )
echo "<br><br>";

// rsort() - 내림차순 정렬
rsort($numbers);
echo "rsort() 후 numbers: ";
print_r($numbers); // Array ( [0] => 8 [1] => 5 [2] => 4 [3] => 2 [4] => 1 )
echo "<br>";

rsort($fruits);
echo "rsort() 후 fruits: ";
print_r($fruits); // Array ( [0] => orange [1] => grape [2] => banana [3] => apple )
echo "<br>";
?>

 

1.2. 키(Key)를 기준으로 정렬

  • ksort(): 배열의 키를 오름차순으로 정렬합니다. (연관 배열에서 주로 사용)
  • krsort(): 배열의 키를 내림차순으로 정렬합니다. (연관 배열에서 주로 사용)
PHP
 
<?php
$age = ["Peter" => "35", "Ben" => "37", "Joe" => "43"];

echo "<h3>키 기준 정렬</h3>";

// ksort() - 키 오름차순 정렬
ksort($age);
echo "ksort() 후 age: ";
print_r($age); // Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
echo "<br><br>";

// krsort() - 키 내림차순 정렬
krsort($age);
echo "krsort() 후 age: ";
print_r($age); // Array ( [Peter] => 35 [Joe] => 43 [Ben] => 37 )
echo "<br>";
?>

 

1.3. 값(Value)을 기준으로 정렬하되 키(Key) 유지

  • asort(): 배열의 값을 오름차순으로 정렬하되, 해당 값과 연결된 키를 유지합니다. (연관 배열에서 주로 사용)
  • arsort(): 배열의 값을 내림차순으로 정렬하되, 해당 값과 연결된 키를 유지합니다. (연관 배열에서 주로 사용)
PHP
 
<?php
$age = ["Peter" => "35", "Ben" => "37", "Joe" => "43"];

echo "<h3>값 기준 정렬 (키 유지)</h3>";

// asort() - 값 오름차순 정렬, 키 유지
asort($age);
echo "asort() 후 age: ";
print_r($age); // Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
echo "<br><br>";

// arsort() - 값 내림차순 정렬, 키 유지
arsort($age);
echo "arsort() 후 age: ";
print_r($age); // Array ( [Joe] => 43 [Ben] => 37 [Peter] => 35 )
echo "<br>";
?>



2. 배열 요소 추가 및 삭제 함수

배열에 새로운 요소를 추가하거나, 기존 요소를 삭제하는 다양한 함수들이 있습니다.

2.1. 요소 추가

  • array_push(): 배열의 끝에 하나 이상의 요소를 추가합니다. (인덱스 배열에 유용)
  • array_unshift(): 배열의 맨 앞에 하나 이상의 요소를 추가합니다. 기존 요소들의 키가 변경됩니다.
PHP
 
<?php
$fruits = ["apple", "banana"];

echo "<h3>요소 추가</h3>";

// array_push() - 배열 끝에 추가
array_push($fruits, "cherry", "mango");
echo "array_push() 후 fruits: ";
print_r($fruits); // Array ( [0] => apple [1] => banana [2] => cherry [3] => mango )
echo "<br><br>";

// array_unshift() - 배열 맨 앞에 추가
$colors = ["red", "blue"];
array_unshift($colors, "green", "yellow");
echo "array_unshift() 후 colors: ";
print_r($colors); // Array ( [0] => green [1] => yellow [2] => red [3] => blue )
echo "<br>";
?>

 

2.2. 요소 삭제

  • array_pop(): 배열의 마지막 요소를 제거하고 반환합니다.
  • array_shift(): 배열의 첫 번째 요소를 제거하고 반환합니다. 기존 요소들의 키가 변경됩니다.
  • unset(): 특정 키/인덱스의 요소를 삭제합니다. 키는 재설정되지 않습니다.
PHP
 
<?php
$stack = ["a", "b", "c", "d"];

echo "<h3>요소 삭제</h3>";

// array_pop() - 마지막 요소 삭제
$lastElement = array_pop($stack);
echo "array_pop()으로 삭제된 요소: " . $lastElement . "<br>"; // d
echo "array_pop() 후 stack: ";
print_r($stack); // Array ( [0] => a [1] => b [2] => c )
echo "<br><br>";

// array_shift() - 첫 번째 요소 삭제
$firstElement = array_shift($stack);
echo "array_shift()으로 삭제된 요소: " . $firstElement . "<br>"; // a
echo "array_shift() 후 stack: ";
print_r($stack); // Array ( [0] => b [1] => c )
echo "<br><br>";

// unset() - 특정 키/인덱스 요소 삭제
$data = ["name" => "Alice", "age" => 30, "city" => "Seoul"];
unset($data["age"]);
echo "unset() 후 data (age 삭제): ";
print_r($data); // Array ( [name] => Alice [city] => Seoul )
echo "<br><br>";

$list = ["apple", "banana", "cherry"];
unset($list[1]); // 인덱스 1 삭제
echo "unset() 후 list (인덱스 1 삭제): ";
print_r($list); // Array ( [0] => apple [2] => cherry ) -> 인덱스 재설정 안 됨!
echo "<br>";
?>



3. 배열 합치기 및 분할 함수

배열을 합치거나 특정 기준으로 나누는 함수들도 유용하게 사용됩니다.

3.1. 배열 합치기

  • array_merge(): 하나 이상의 배열을 합쳐 새로운 배열을 생성합니다. 키가 숫자이면 재설정되고, 문자열 키는 동일하면 나중에 온 값으로 덮어씁니다.
  • + (배열 결합 연산자): 두 배열을 합칩니다. 키가 동일하면 먼저 온 배열의 값을 유지합니다. (연관 배열에 유용)
PHP
 
<?php
$array1 = ["red", "green"];
$array2 = ["blue", "yellow"];
$array3 = ["color1" => "red", "color2" => "green"];
$array4 = ["color2" => "blue", "color3" => "yellow"];

echo "<h3>배열 합치기</h3>";

// array_merge() - 인덱스 배열 합치기 (키 재설정)
$mergedArray1 = array_merge($array1, $array2);
echo "array_merge() 인덱스 배열: ";
print_r($mergedArray1); // Array ( [0] => red [1] => green [2] => blue [3] => yellow )
echo "<br><br>";

// array_merge() - 연관 배열 합치기 (키 중복 시 덮어쓰기)
$mergedArray2 = array_merge($array3, $array4);
echo "array_merge() 연관 배열: ";
print_r($mergedArray2); // Array ( [color1] => red [color2] => blue [color3] => yellow )
echo "<br><br>";

// + 연산자 - 연관 배열 합치기 (키 중복 시 기존 값 유지)
$combinedArray = $array3 + $array4;
echo "+ 연산자 연관 배열: ";
print_r($combinedArray); // Array ( [color1] => red [color2] => green [color3] => yellow )
echo "<br>";
?>

 

3.2. 배열 분할

  • array_slice(): 배열의 특정 부분을 잘라내어 새로운 배열을 생성합니다. 원본 배열은 변경되지 않습니다.
PHP
 
<?php
$numbers = [10, 20, 30, 40, 50, 60];

echo "<h3>배열 분할</h3>";

// 인덱스 2부터 3개 요소 슬라이스
$slice1 = array_slice($numbers, 2, 3);
echo "array_slice(2, 3) 후: ";
print_r($slice1); // Array ( [0] => 30 [1] => 40 [2] => 50 )
echo "<br><br>";

// 인덱스 -3부터 끝까지 슬라이스 (뒤에서 3번째부터)
$slice2 = array_slice($numbers, -3);
echo "array_slice(-3) 후: ";
print_r($slice2); // Array ( [0] => 40 [1] => 50 [2] => 60 )
echo "<br>";
?>



4. 기타 유용한 배열 함수

  • count(): 배열의 요소 개수를 반환합니다.
  • in_array(): 배열 안에 특정 값이 존재하는지 확인합니다.
  • array_keys(): 배열의 모든 키를 반환합니다.
  • array_values(): 배열의 모든 값을 반환합니다.
  • array_unique(): 배열에서 중복된 값을 제거하고 새로운 배열을 반환합니다.
  • array_reverse(): 배열의 요소 순서를 역순으로 바꾼 새로운 배열을 반환합니다.
 
PHP
 
<?php
$data = ["apple", "banana", "apple", "cherry", "banana"];
$user_info = ["name" => "John", "age" => 30, "city" => "New York"];

echo "<h3>기타 유용한 함수</h3>";

// count()
echo "data 배열의 요소 개수: " . count($data) . "<br>"; // 5
echo "<br>";

// in_array()
if (in_array("banana", $data)) {
    echo "data 배열에 'banana'가 있습니다.<br>";
}
if (!in_array("grape", $data)) {
    echo "data 배열에 'grape'가 없습니다.<br>";
}
echo "<br>";

// array_keys()
echo "user_info 배열의 키: ";
print_r(array_keys($user_info)); // Array ( [0] => name [1] => age [2] => city )
echo "<br><br>";

// array_values()
echo "user_info 배열의 값: ";
print_r(array_values($user_info)); // Array ( [0] => John [1] => 30 [2] => New York )
echo "<br><br>";

// array_unique()
$uniqueData = array_unique($data);
echo "array_unique() 후 data: ";
print_r($uniqueData); // Array ( [0] => apple [1] => banana [3] => cherry )
echo "<br><br>";

// array_reverse()
$reversedData = array_reverse($data);
echo "array_reverse() 후 data: ";
print_r($reversedData); // Array ( [0] => banana [1] => cherry [2] => apple [3] => banana [4] => apple )
echo "<br>";
?>



결론

이번 #PHP 초급 강좌에서는 #PHP배열 을 효율적으로 다루기 위한 다양한 #배열조작함수 들을 살펴보았습니다. #정렬함수 (sort, rsort, ksort, krsort, asort, arsort)를 통해 데이터를 원하는 순서로 정렬하고, #요소추가함수 (array_push, array_unshift)와 #요소삭제함수 (array_pop, array_shift, unset)를 이용해 배열의 내용을 동적으로 변경하는 방법을 배웠습니다. 또한 #배열합치기함수 (array_merge, + 연산자)와 #배열분할함수 (array_slice) 그리고 #기타배열함수 (count, in_array, array_keys, array_values, array_unique, array_reverse) 등 유용한 함수들을 익혔습니다.

이 함수들을 숙지하면 실제 PHP 프로젝트에서 데이터를 다루는 데 큰 도움이 될 것입니다. 이것으로 PHP 초급 6주차 배열에 대한 모든 강의를 마칩니다