다음과 같은 다차원 배열 (MySQL 또는 서비스에서 검색)이 있다고 가정 해 보겠습니다.
array(
array(
[id] => xxx,
[name] => blah
),
array(
[id] => yyy,
[name] => blahblah
),
array(
[id] => zzz,
[name] => blahblahblah
),
)
id
하나의 ” 내장 “php 함수 호출 에서 의 배열을 얻을 수 있습니까 ? 또는 한 줄의 코드?
나는 전통적인 루핑과 가치를 알고 있지만 이것이 필요하지 않습니다.
foreach($users as $user) {
$ids[] = $user['id'];
}
print_r($ids);
어쩌면 일부 array_map()
와는 call_user_func_array()
마법을 할 수 있습니다.
답변
PHP 5.5부터 다음을 사용할 수 있습니다 array_column
.
$ids = array_column($users, 'id');
이것은 모든 최신 프로젝트에서 선호되는 옵션입니다. 그러나 php> 5.5를 지원해야하는 경우 다음 대안이 있습니다.
php 5.3부터 다음 array_map
과 같이 익명 함수와 함께 사용할 수 있습니다 .
$ids = array_map(function ($ar) {return $ar['id'];}, $users);
(기술적으로 php 4.0.6+) 이전 에는 create_function
대신 다음을 사용하여 익명 함수를 만들어야합니다 .
$ids = array_map(create_function('$ar', 'return $ar["id"];'), $users);
답변
PHP 5.5 이상
PHP5.5 이상부터는 array_column ()을 사용할 수 있으며, 이는 아래의 모든 것을 쓸모 없게 만듭니다.
PHP 5.3 이상
$ids = array_map(function ($ar) {return $ar['id'];}, $users);
@phihag의 솔루션은 PHP 5.3.0부터 PHP에서 완벽하게 작동합니다. 그 전에 지원이 필요한 경우 해당 wp_list_pluck을 복사해야합니다.
PHP <5.3
WordPress 3.1 이상
WordPress에는
문제를 해결하는 WordPress를 사용하는 경우 wp_list_pluck 이라는 함수가 있습니다.
PHP <5.3
WordPress를 사용하지 않는 경우 코드가 오픈 소스이므로 프로젝트에 코드를 복사하여 붙여 넣을 수 있습니다 (그리고 함수 이름을 array_pick과 같이 원하는 이름으로 변경). 여기에서 소스보기
답변
id
배열의 첫 번째 키인 경우 다음을 수행합니다.
$ids = array_map('current', $users);
그러나 반드시 이것에 의존해서는 안됩니다. 🙂
답변
array_reduce()
보다 기능적인 접근 방식을 선호하는 경우 에도 사용할 수 있습니다.
예를 들면 :
$userNames = array_reduce($users, function ($carry, $user) {
array_push($carry, $user['name']);
return $carry;
}, []);
또는 당신이 화려하고 싶다면
$userNames = [];
array_map(function ($user) use (&$userNames){
$userNames[]=$user['name'];
}, $users);
이 방법과 위의 모든 방법은 장면 뒤에서 반복됩니다.)