| Code | function |
|---|---|
| array_chunk(array, int, bool) | 배열을 int 개수씩 분할, key값을 유지하려면 true |
| array_combine(array $keys, array $values): array | 배열의 길이가 같아야함, 첫 배열을 키값, 두 번째 배열을 value 값으로 새로운 배열을 만듦 |
| array_filter(array, callback function, int):array | 배열에 조건을 걸어 필터링 |
| array_keys(array, value, bool): array | 배열의 키값만을 추출, value값으로 원하는 키값을 추출할 수 있고 bool 타입을 통해 엄격한 타입체크가 가능함 |
| array_map(callback, array, array, …): array | 배열의 요소들에 차례차례 콜백함수 적용, 아래 참조 |
| array_merge(array, array …): array | 순서대로 배열 합침, 키값을 그대로 적용하나 override 가능 |
| array_reduce(array, callback, value): mixed | 아래 설명 참조 |
| array_search(value, array, bool) | 배열 안에 해당하는 value가 있다면 해당 인덱스를 리턴, 가장 처음으로 찾은 인덱스를 리턴해줌 |
| array_diff(array, array, array …): array | 아래 설명 참조 |
| asort(array), ksort(array) | 배열 정렬, 아래 설명 참조 |
array_map()
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = ["d" => 4, "e" => 5, "f" => 6];
$array = array_map(fn($number1, $number2) => $number1 * $number2,
$array1, $array2);
// [4, 10, 18]
// 파라미터로 배열 하나만을 넘길 경우 키 값이 유지되지만 2개 이상 넘길 경우 숫자 인덱스로 재배열
// 길이가 다른 배열 두 개 이상을 파라미터로 넘길 경우 인자가 없는 배열은 0으로 취급
array_reduce()
$arrayItems = [
["price" => 19, "qty" => 3, "desc" => "Item 1"],
["price" => 1, "qty" => 4, "desc" => "Item 2"],
["price" => 9, "qty" => 6, "desc" => "Item 3"],
["price" => 12, "qty" => 2, "desc" => "Item 4"],
["price" => 39, "qty" => 1, "desc" => "Item 5"],
]
$total = array_reduce($arrayItems,
fn($sum, $item) => $sum + $item["qty"] * $item["price"],
100);
// callback 함수 첫 번째 파라미터의 기본값은 0, 두 번째 파라미터는 배열의 요소를 뜻한다
// 즉 첫 번째 순회가 끝나면 그 결과가 callback 함수의 첫 번째 파라미터로 다시 들어가고
// 다시 callback 함수를 실행. 배열 순회가 모두 끝날 때까지 진행
// (재귀랑 비슷한 느낌?)
array_diff()
$array1 = ["a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5];
$array1 = ["d" => 4, "g" => 5, "i" => 6, "j" => 7, "k" => 8];
$array1 = ["l" => 3, "m" => 9, "n" => 10];
array_diff($array1, $array2, $array3);
// ["a" => 1, "b" => 2]
// 첫 번째 배열을 기준으로 뒤의 배열들과 중복되지 않는 요소들을 리턴
array_diff_assoc($array1, $array2, $array3);
// ["a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5]
// 첫 번째 배열을 기준으로 뒤의 배열들과 key&value 쌍으로 비교해 중복되지 않는 요소 리턴
array_diff_key($array1, $array2, $array3);
// 첫 번째 배열을 기준으로 키값만을 비교해 중복되지 않는 요소 리턴
sort
$array = ["d" => 3, "b" => 1, "c" => 4, "a" => 2];
asort($array);
// value값을 기준으로 정렬
ksort($array);
// key값을 기준으로 정렬
usort()
array destructuring
$array = [1, 2, 3, 4];
[$a, $b, $c, $d] = $array;
// $a = 1, $b = 2, ...
[$a, , $c, ,] = $array;
// $a = 1, $c = 3
// 공백과 콤마를 활용하면 필요없는 요소는 뺄 수 있다
// 목표로 하는 배열과 형태만 맞추면 얼마든 가능하다
$array = [1, 2, 3];
[1 => $a, 0 => $b, 2 => $c] = $array;
// 2, 1, 3
// 따로 키 설정도 가능
error_reporting(0) // 에러 출력 x
error_reporting(E_ALL) // 모든 에러 출력
...
trigger_error("~ error", error_type);
// 사용자 임의로 에러 출력
function errorHandler(...variables) {
//
exit;
}
set_error_handler("errorHandler", E_ALL);
// error_reporting을 덮어쓰기 때문에 커스터마이징을 할 때 잘 고려해서 하기
----------------------
error_reporting(E_ALL & ~E_WARNING);
set_error_handler("errorHandler", E_ALL);
echo $x
// parser error 출력
// 에러 핸들러 스크립트가 적용되기 전 컴파일에서 에러가 나 에러 핸들링이 동작하지 않음