Using a proprietary framework, I am frequently finding myself in the situation where I get a resultset from the database in the following format:
array(5) {
[0] => array(1) {
["id"] => int(241)
}
[1] => array(1) {
["id"] => int(2)
}
[2] => array(1) {
["id"] => int(81)
}
[3] => arr开发者_如何学Pythonay(1) {
["id"] => int(560)
}
[4] => array(1) {
["id"] => int(10)
}
}
I'd much rather have a single array of ids, such as:
array(5) {
[0] => int(241)
[1] => int(2)
[2] => int(81)
[3] => int(560)
[4] => int(10)
}
To get there, I frequently find myself writing:
$justIds = array();
foreach( $allIds as $id ) {
$justIds[] = $id["id"];
}
Is there a more efficient way to do this?
$out = array_map('array_shift', $in);
e.g.
$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);
prints
array(5) {
[0]=>
int(241)
[1]=>
int(2)
[2]=>
int(81)
[3]=>
int(560)
[4]=>
int(10)
}
With PHP 5.3 you can do
$justIds = array_map(
function($cur) {
return $cur['id'];
},
$allIds
);
With PHP < 5.3 you'd have define a regular function and then pass the name as string to array_map().
精彩评论