2015-05-28 29 views
2

這很容易,但我正在努力。如果下面的數組存在(名爲「$ 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 
     ) 

) 

回答

1

對於您的多維數組,就可以通過外部陣列和測試循環您的密鑰的內部數組。

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

echo findKey($startersnames, "qb"); 
0

您可以嘗試foreach循環

$key = "qb"; 
foreach($startersnames as $innerArr){ 
    if(isset($innerArr[$key])) { 
     echo $innerArr[$key]; 
    } 
} 
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"; 
} 
+0

這是優雅的爲好。 – Drakes

+0

用於過濾查詢結果等的有用和優雅 –

2

你似乎在期待着與每個文本鍵和值的數組,但你出的陣列是一個數組的數組:即每個數字鍵都有一個值,該值一個數組 - 您要查找關鍵字'qb'的鍵/值對。

如果你想找到在$數組的值[「QB」]那麼你的數組看起來更像:

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

現在$陣列[「QB」]有一個值。

如果您正在檢查的數組是一個鍵/值對列表,則必須迭代數組成員並檢查每個數組成員(即在第一個答案中顯示的foreach循環)。

+0

並非如此。 'print_r'將在鍵中顯示一個沒有引號的數組。這是OP向我們展示的內容。他特別指出:「$ startersnames [0] ['qb']的作品」 – Drakes

+0

確實,print_r確實會去掉字符串中的引號,但PHP通常需要引用字符串或變量的引號。您的解決方案在遍歷數組成員時可以工作,從而允許內部數組成員可見性。即使觀察其測試$ starternames [0] ['qb']包含的數據,OP似乎沒有觀察到結構,並且在迭代數字鍵時正在尋找文本鍵匹配。 –

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

相關問題