2013-03-05 59 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); 
?> 
相关问题