2014-02-18 121 views
0

鉴于以下结构检索子阵列值: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值阵列的方法?

我可以肯定地循环它们,但也许有一个内置的,我已经看不到已经做到这一点的手册?

回答

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; 
} 
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']); 
})); 
0

array_keys()是你在找什么。从文档

样本:

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