0

$plugins私はこのようなものと呼ばれる配列を持ってい ます:

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

現在、各配列要素のKEY名(パス)を取得するのに問題があります。

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)それは私に最初の手紙だけを与えています..(??)

ネストされた各配列のこのキーを取得するにはどうすればよいですか?

4

3 に答える 3

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
   }
于 2013-03-05T01:54:45.720 に答える
1

を返すだけ$pluginで、ではありませんkey($plugin)$pluginすでに鍵となるはずです。

構文を使用する場合、詳しく説明します。

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

それは$pluginキーとその$data値に設定されています。

于 2013-03-05T01:55:47.187 に答える
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);
?>
于 2013-03-05T02:03:34.777 に答える