php 기본 문법 (6)

정종일·2023년 9월 4일

php

목록 보기
6/13

Array functions

Codefunction
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 Handling

  • PHP Documentation 참고
  • Error와 Warning의 차이점
    • Error는 발생과 동시에 프로그램 동작 멈춤
    • Warning은 발생해도 프로그램이 멈추지 않음

Error Handling

error_reporting(0) // 에러 출력 x
error_reporting(E_ALL) // 모든 에러 출력
...

trigger_error("~ error", error_type);
// 사용자 임의로 에러 출력

Error Handler

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 출력
// 에러 핸들러 스크립트가 적용되기 전 컴파일에서 에러가 나 에러 핸들링이 동작하지 않음
profile
제어할 수 없는 것에 의지하지 말자

0개의 댓글