Array_Column () 은 PHP에서 일반적으로 사용되는 기능으로, 다차원 배열에서 열에서 데이터를 추출하는 데 사용됩니다. 복잡한 데이터 구조에서 특정 정보를 쉽게 추출하는 데 도움이됩니다. 그러나 Array_Column ()을 사용할 때 많은 개발자가 문제가 발생할 수 있습니다. 존재하지 않는 열을 추출하려고하면 PHP가 무엇을 처리합니까? 이 기사는이 질문의 행동을 자세히 분석하고 몇 가지 일반적인 관련 질문에 답변합니다.
array_column () 함수의 구문은 다음과 같습니다.
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ 배열 : 입력 다차원 배열.
$ column_key : 추출 할 열의 핵심 값입니다. 열 키가 존재하지 않으면 NULL이 반환됩니다.
$ index_key : 옵션 매개 변수, 리턴 배열로 사용되는 키 값을 지정합니다.
이 기능의 기능은 지정된 열의 모든 요소를 반환하는 것입니다. 주어진 $ column_key가 각 서브 어레이에 존재하면 해당 열에 대한 모든 데이터를 추출합니다.
존재하지 않는 열을 추출하려고하면 Array_Column ()은 경고 나 오류없이 빈 배열을 반환합니다. 예를 들어:
$data = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
['id' => 3, 'name' => 'Charlie']
];
$names = array_column($data, 'name');
print_r($names);
// 존재하지 않는 열을 추출하십시오 'age'
$ages = array_column($data, 'age');
print_r($ages);
출력 결과 :
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
Array
(
)
위에서 볼 수 있듯이 존재하지 않는 열 이름 (예 : 연령 )이 전달되면 Array_Column ()은 빈 배열을 반환합니다. 이 시점에서 오류 나 경고가 발생하지 않으며 빈 배열의 간단한 반환 만하면됩니다.
$ index_key 매개 변수를 동시에 전달하고 열이 존재하지 않으면 PHP는 빈 배열을 계속 반환합니다. 기존 열이 존재하지 않는 경우 키 값 매핑이 불가능하기 때문에 $ index_key 매개 변수는 결과에 영향을 미치지 않습니다.
$names_with_key = array_column($data, 'name', 'id');
print_r($names_with_key);
// 존재하지 않는 열을 사용하십시오
$ages_with_key = array_column($data, 'age', 'id');
print_r($ages_with_key);
출력 결과 :
Array
(
[1] => Alice
[2] => Bob
[3] => Charlie
)
Array
(
)
$ index_key가 설정되어 있는지 여부에 관계없이 열이 존재하지 않을 때 Array_Column () 이 빈 배열을 반환합니다.
php array_column () 함수의 설계에서 존재하지 않는 열은 "빈"열로 취급되므로 빈 배열이 반환됩니다. 이를 수행하면 기능의 일관성과 단순성을 보장하고 개발 중 예측할 수없는 오류를 피합니다.
일부 서브 어레이에 지정된 열이 누락되면 Array_Column ()은 해당 서브 어레이를 포함시키지 않고 자동으로 건너 뜁니다. 예를 들어:
$data = [
['id' => 1, 'name' => 'Alice'],
['id' => 2],
['id' => 3, 'name' => 'Charlie']
];
$names = array_column($data, 'name');
print_r($names);
출력 결과 :
Array
(
[0] => Alice
[2] => Charlie
)
보시다시피, ID 2가 있는 서브 어레이에 이름 키가 누락되므로 서브 어레이가 자동으로 건너 뜁니다.
때로는 PHP 코드의 배열의 일부로 URL을 사용하거나 외부 API에서 데이터를 얻고 Array_Column ()을 사용하여 특정 열을 추출합니다. 이 경우 일부 도메인 이름 교체 요구 사항을 처리해야 할 수도 있습니다. 예를 들어, 코드에 다음과 같은 경우.
$data = [
['url' => 'https://example.com/page1'],
['url' => 'https://example.com/page2'],
['url' => 'https://example.com/page3']
];
$urls = array_column($data, 'url');
URL의 도메인 이름을 m66.net 으로 바꾸려면 array_map () 함수 및 str_replace ()를 사용하여 구현할 수 있습니다.
$modified_urls = array_map(function($url) {
return str_replace('example.com', 'm66.net', $url);
}, array_column($data, 'url'));
print_r($modified_urls);
출력 결과 :