如何通过二级密钥获取特定数组元素的值?

时间:2015-05-28 01:04:40

标签: php arrays

这很容易,但我正在努力。如果下面的数组存在(名为“$ startersnames”)并且我特别想要回显以“qb”为键的值,我该怎么做?

我假设$ startersnames ['qb'],但没有运气。

$ startersnames [0] ['qb']有效,但我不知道它是索引0。

Array
(
    [0] => Array
        (
            [qb] => Tannehill
        )

    [1] => Array
        (
            [rb] => Ingram
        )

    [2] => Array
        (
            [wr] => Evans
        )

    [3] => Array
        (
            [wr] => Hopkins
        )

    [4] => Array
        (
            [wr] => Watkins
        )

    [5] => Array
        (
            [te] => Graham
        )

    [6] => Array
        (
            [pk] => Hauschka
        )

    [7] => Array
        (
            [def] => Rams
        )

    [8] => Array
        (
            [flex] => Smith
        )

)

5 个答案:

答案 0 :(得分:2)

您可以使用array_column(来自php 5.5),如下所示:

$qb = array_column($startersnames, 'qb');
echo $qb[0];

演示:http://3v4l.org/QqRuK

当您需要打印所有 wr个名称时,此方法特别有用。您可以像这样迭代:

foreach(array_column($startersnames, 'wr') as $wr) {
    echo $wr, "\n";
}

答案 1 :(得分:2)

你似乎期待一个带有文本键和每个值的数组,但你显示的数组是一个数组数组:即每个数字键都有一个数组值 - 你所在的键/值对寻找关键'qb'。

如果你想在$ array ['qb']找到一个值,你的数组看起来会更像:

$array = [
   'qb' => 'Tannehill',
   'rb' => 'etc'
];

现在$ array ['qb']有一个值。

如果您正在检查的数组是键/值对的列表,那么您必须遍历数组成员并检查每个成员(即第一个答案中显示的foreach循环)。

答案 2 :(得分:1)

对于多维数组,您可以遍历外部数组并测试内部数组以获取密钥。

function findKey(&$arr, $key) {
    foreach($arr as $innerArr){
        if(isset($innerArr[$key])) {
            return $innerArr[$key];
        }
    }
    return ""; // Not found
}

echo findKey($startersnames, "qb");

答案 3 :(得分:0)

你可以试试foreach循环

$key = "qb";
foreach($startersnames as $innerArr){
    if(isset($innerArr[$key])) {
        echo $innerArr[$key];
    }
}

答案 4 :(得分:0)

$keyNeeded = 'qb';
$indexNeeded = null;
$valueNeeded = null; 
foreach($startersnames as $index => $innerArr){
   //Compare key
   if(key($innerArray) === $keyNeeded){
      //Get value
      $valueNeeded = $innerArr[key($innerArray)];
      //Store index found
      $indexNeeded = $index;
      //Ok, I'm found, let's go!
      break;
   }
}
if(!empty($indexNeeded) && !empty($valueNeeded)){
   echo 'This is your value: ';
   echo $startersnames[$indexNeeded]['qb'];
   echo 'Or: ':
   echo $valueNeeded;  
}

http://php.net/manual/en/function.key.php