새로 들어온 회사는 PHP와 워드프레스를 기반으로 만들어진 웹사이트와 앱을 서비스한다.
그래서 PHP를 공부하게 되었다.
PHP 문법은 자바스크립트와 비슷한 듯 다른데, 특히 배열의 형태가 굉장히 달라서 특이하다고까지 느껴졌다.
PHP 배열의 기본형태
PHP 배열은 기본적으로 아래처럼 생겼다.
자바스크립트에서 익숙하게 사용하던 [] 대신 array()를 쓰려니 너무 비효율적이란 느낌이 들었다.
배열이 중첩되거나 길어지면 읽기도 힘들다.
// PHP array를 정의하는 방법 (normal)
$array1 = array();
$array2 = array(
"foo" => "bar",
"bar" => "foo",
);
그런데 아래와 같이 짧게도 쓸 수 있더라. (기존 소스코드를 아래의 형태로 바꿔주고 있다.)
숏버전은 PHP 5.4부터 사용가능하다.
// PHP array를 정의하는 방법 (short)
$array = [
"foo" => "bar",
"bar" => "foo",
];
PHP array 값 추가하기
1. array_push(배열, 값);
$array = [];
// 키 없는 값을 추가
array_push($array, $value);
// 키 있는 값을 추가
array_push($array[$key], $value);
// 예시
$args = [
'posts_per_page' => - 1,
'meta_query' => [
[
'key' => 'cw_user_level',
'value' => 1
]
]
];
array_push($args['include'], 100);
2. $array[] = 값;
array_push()보다 훨씬 빠르다!
// 키 없이 추가
$array[] = $value;
// 키 주고 추가
$array['key'] = $value;
PHP array 값 삭제하기
$array = [0 => '가', 1 => '나', 2 => '다',];
// 키 없이 삭제
unset($array[0]);
// 배열의 '가' 값이 삭제된다.
//===========================================
$array2 = ['A' => '가', 'B' => '나', 'C' => '다',];
// 키 주고 삭제
unset($array2['B']);
// 배열의 '나' 값이 삭제된다.
배열끼리 비교하기
- 연산자 == 를 사용하면 각 배열에 같은 키 & 같은 값 한 쌍이 있는지 확인한다.
- 연산자 === 를 사용하면 각 배열에 같은 키 & 같은 값 한 쌍이 있는지 확인하고,
추가로 배열된 순서와 키/값의 자료형까지 확인한다. - array_diff() 를 사용하여 두 배열의 차이점을 확인한다. 차집합 배열을 반환한다.
- array_intersect() 를 사용하여 두 배열의 공통점을 확인한다. 교집합 배열을 반환한다.
자주 쓰는 배열 함수
// 배열 안의 요소 갯수 세기
count($array);
// 배열의 특정 요소를 맨 끝으로 보내기
$my_array = ['gorila','monkey','bunny']; // 배열
$temp = $my_array['monkey']; // 1. 임시 변수에 뒤로 보낼 요소를 저장
unset($my_array['monkey']); // 2. 배열에서 뒤로 보낼 요소를 제거한다
$my_array['monkey'] = $temp; // 3. 배열에 저장해뒀던 요소를 다시 넣는다
배열 자료형 변환 함수
// 배열을 json 형태로 바꾸기
json_encode($array);
출력 시 : $array = ["1", "2", "3", "Orange"]
// 배열을 문자열로 (array to string)
$array_fruits = [1, 2, 3];
$string_fruits = implode(',', $array_fruits);
여러 요소로 이루어진 배열을 하나의 문자열로 바꿀 때,
implode()의 첫번째 파라미터에는 각 요소 사이에 넣을 구분자를 넣는다.
예시에서는 쉼표(,)를 넣어줬기 때문에 $string_fruits는 "1,2,3" 형태의 문자열이 된다.
// 문자열을 배열로 (string to array)
$string_fruits = "1,2,3";
$array_fruits = explode(',', $string_fruits);
문자열 하나를 여러개의 요소가 담긴 배열로 바꿀 때,
explode()의 첫번째 파라미터에는 각 요소 사이에 들어있는 구분자를 넣는다.
예시에서는 쉼표(,)를 넣어줬기 때문에 쉼표마다 멈추고 그 자리까지의 요소를 잘라온다.
$array_fruits 는 1과 2와 3이 담긴 배열이 된다.
[참고]
Array 사용법
https://www.php.net/manual/en/language.types.array.php
array()와 []의 차이점
https://stackoverflow.com/questions/17772534/php-difference-between-array-and
array-push()와 $array[] 뭐가 더 빠를까
https://www.php.net/manual/en/function.array-push.php
배열의 특정값을 맨 끝으로 보내는 법
PHP에서 두 배열 비교하기
'PHP & WP' 카테고리의 다른 글
[WordPress] 포스트가 작성된 날짜(post_date)를 기간으로 검색하기 (0) | 2022.05.19 |
---|---|
[WordPress] get_post()에 include를 썼을 때 페이징 오류가 난다면? (0) | 2022.05.19 |
댓글