2013-03-05 44 views
0

我有一個名爲$plugins一個數組,看起來是這樣的:PHP - 獲得一個嵌套的數組的一個關鍵

Array 
(
    [path/to/file.php] => Array 
     (
      [Name] => somevalue_a 
      [TextDomain] => somevalue_b 
      [value_c] => somevalue_c 
      [value_d] => somevalue_d 
      ... 
      ... 
      .. 

     ) 
    [path/to/file2.php] => Array 
     (
      [Name] => somevalue_a 
      [TextDomain] => somevalue_b 
      [value_c] => somevalue_c 
      [value_d] => somevalue_d 
      ... 
      ... 
      .. 
     ) 
) 

現在,我無法得到密鑰名(這是路徑),每個陣列的元素..

function get_plugin_data(){ 

    foreach ($plugins as $plugin => $data) { 
    $plugin_data = $plugins[$plugin]; 

    // Start simple DEBUG 
    echo '</br>===============================</br>' ; 
    echo '</br><b>Plugin Name : </b>'. $data[Name]; .'</br>' ; 
    echo '</br><b>Plugin Path : </b>'. key($plugins) .'</br>' ; // <-- Problem here 
    echo '</br>TextDomain set : '. $data[TextDomain] .'</br>' ; 
    echo '</br>===============================</br>' ; 
    // End DEBUG 
    } 
} 

當使用key($plugins)它給我總是相同的值(第一個)。 當使用key($data)它只給我第一封信。(??)

如何獲得每個嵌套數組的這個鍵?

+2

只返回'$ plugin',而不是'key($ plugin)'。 $插件應該已經是關鍵。 – kennypu 2013-03-05 01:52:15

+0

@kennypu我的上帝..太失眠了。你是對的 。添加爲答案,我會接受。 – 2013-03-05 01:54:18

回答

1

只是返回$plugin,不key($plugin)$plugin應該已經是關鍵。

闡述,當您使用語法:

foreach ($plugins as $plugin => $data)

它設置$plugin的關鍵,並$data到它的價值。

+0

好的,明白了。但是爲什麼key($ data)給我一個(第一個)字母? – 2013-03-05 01:59:32

+0

@ObmerkKronen這是一個有趣的問題,我想它應該是錯誤的,因爲在這種情況下,$ plugin是一個字符串,而不是一個數組。即使字符串被視爲數組,它也應該返回'0'而不是字符串的第一個字符。我沒有任何線索。 – kennypu 2013-03-05 02:03:59

1

您的foreach循環表示路徑可用爲$plugin。使用

foreach ($plugins as $plugin => $data) { 
         //^This represents the key of the array item 
    $plugin_data = $plugins[$plugin]; 

    // Start simple DEBUG 
    echo '</br>===============================</br>' ; 
    echo '</br><b>Plugin Name : </b>'. $data[Name]; .'</br>' ; 
    echo '</br><b>Plugin Path : </b>'. $plugin .'</br>' ; // <-- Problem here 
    echo '</br>TextDomain set : '. $data[TextDomain] .'</br>' ; 
    echo '</br>===============================</br>' ; 
    // End DEBUG 
    } 
+0

謝謝,我從kennzpu的回答中意識到一個簡單的事實(我需要更多的睡眠:-))..非常感謝。 – 2013-03-05 01:57:58

0

檢查對您的代碼的修改,它現在工作。

<?php 
    $plugins = Array 
    (
     'array1' => Array 
      (
       'name' => 'somevalue_a', 
       'TextDomain' => 'somevalue_b', 
       'value_c' => 'somevalue_c', 
       'value_d' => 'somevalue_d' 

      ), 
     'array2' => Array 
      (
       'name' => 'somevalue_a', 
       'TextDomain' => 'somevalue_b', 
       'value_c' => 'somevalue_c', 
       'value_d' => 'somevalue_d' 

      ) 
    ); 

    function get_plugin_data($plugins){ 

     foreach ($plugins as $plugin => $data) { 
     $plugin_data = $plugins[$plugin]; 

     // Start simple DEBUG 
     echo '</br>===============================</br>' ; 
     echo '</br><b>Plugin Name : </b>'. $data['name'] .'</br>' ; 
     echo '</br><b>Plugin Path : </b>'. key($plugins) .'</br>' ; // <-- Problem here 
     echo '</br>TextDomain set : '. $data['TextDomain'] .'</br>' ; 
     echo '</br>===============================</br>' ; 
     // End DEBUG 
     } 
    } 
    get_plugin_data($plugins); 
    //print_r($plugins); 
?> 
相關問題