鉴于以下结构:
Array
(
[0] => Array
(
[id_field] => 100
)
[1] => Array
(
[id_field] => 200
)
[2] => Array
(
[id_field] => 382
)
[3] => Array
(
[id_field] => 509
)
[4] => Array
(
[id_field] => 636
)
[5] => Array
(
[id_field] => 763
)
[6] => Array
(
[id_field] => 890
)
[7] => Array
(
[id_field] => 1017
)
)
是否有内置数组方法可以获取所有id_field值?
我可以肯定地循环它们,但是想想可能有一个内置的,我在手册中看不到已经这样做了吗?
答案 0 :(得分:2)
如果你有PHP 5.5.0+,你可以使用array_column()
:
$result = array_column($data, 'id_field');
如果您运行的是较旧的PHP版本,则可以使用此函数的userland implentation(由编写原始array_column()
函数的同一作者编写)。
但是,对于简单的用例,可以使用简单的foreach
循环将其实现为函数。这并不能保证能够处理所有可能的情况,但在大多数情况下它应该足够了。
function array_column2(array $arr, $column) {
$result = array();
foreach ($arr as $key => $value) {
$result[] = $arr[$column];
}
return $result;
}
答案 1 :(得分:0)
使用数组过滤:
function id($var){
return($var['id_field']);
}
print_r(array_filter($arr,"id"));
或PHP 5.4 +
print_r(array_filter($arr, function id($var){
return($var['id_field']);
}));
答案 2 :(得分:0)
array_keys()正是您要找的。
来自docs的样本:
<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
$array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large"));
print_r(array_keys($array));
?>
它的输出:
Array
(
[0] => 0
[1] => color
)
Array
(
[0] => 0
[1] => 3
[2] => 4
)
Array
(
[0] => color
[1] => size
)