Используя собственную платформу, я часто оказываюсь в ситуации, где я получаю набор результатов от базы данных в следующем формате:
array(5) {
[0] => array(1) {
["id"] => int(241)
}
[1] => array(1) {
["id"] => int(2)
}
[2] => array(1) {
["id"] => int(81)
}
[3] => array(1) {
["id"] => int(560)
}
[4] => array(1) {
["id"] => int(10)
}
}
У меня очень был бы единый массив идентификаторов, таких как:
array(5) {
[0] => int(241)
[1] => int(2)
[2] => int(81)
[3] => int(560)
[4] => int(10)
}
Для получения там я часто пишу:
$justIds = array();
foreach( $allIds as $id ) {
$justIds[] = $id["id"];
}
Существует ли более эффективный способ сделать это?
$out = array_map('array_shift', $in);
например.
$in = array(
array("id" => 241),
array ("id" => 2),
array ("id" => 81),
array ("id" => 560),
array ("id" => 10)
);
$out = array_map('array_shift', $in);
var_dump($out);
выводит
array(5) {
[0]=>
int(241)
[1]=>
int(2)
[2]=>
int(81)
[3]=>
int(560)
[4]=>
int(10)
}
В PHP 5.3 вы можете сделать
$justIds = array_map(
function($cur) {
return $cur['id'];
},
$allIds
);
В PHP < 5.3 вам придется определить регулярную функцию и затем передать ее имя как строку в array_map().