PHP - 按键检索子数组值

时间:2014-02-18 14:33:57

标签: php

鉴于以下结构:

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值?

我可以肯定地循环它们,但是想想可能有一个内置的,我在手册中看不到已经这样做了吗?

3 个答案:

答案 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
)