0

ユーザーがリモート XML ファイルを読み込んで要素を選択できるようにするスクリプトに取り組んでいます。次に、その要素の値を後日取得できるようにする必要があります。XML は定期的に更新され、そのたびに更新値を表示したいと考えています。

これまでのところ、XML を多次元配列に変換し、要素とその値をユーザーに表示し、ユーザーが要素を選択すると、多次元配列のキーを保存します。

たとえば、次の配列があるとします。

  Array
(
    [responsecode] => 0
    [message] => 
    [items] => Array
        (
            [0] => Array
                (
                    [title] => Example1
                    [content] => This is the first message
                    [date] => 00/00/00
                )

            [1] => Array
                (
                    [title] => Example2
                    [content] => This is the second message
                    [date] => 00/00/00
                )
       )
)

ユーザーが最初のタイトル要素を選択した場合、次のようにパスを保存します。

$path = "itmes>0>title";

次に、文字列を分解して個別のキーを取得します。

$keys = explode(">", $path);

Array
    (
        [0] => items
        [1] => 0
        [2] => title
    )

値を手動で読み取りたい場合は、次を使用します。

array['items']['0']['title']

しかし、キーの配列がある場合、そのクエリをどのように構築すればよいでしょうか?

4

1 に答える 1

2

ループを書くだけです:

function extract_value(array $array, array $keys) {
    foreach($keys as $key) {
        if (!isset($array[$key])) return null;
        $array = $array[$key];
    }

    return $array;
}

これを次のように使用します

$result = extract_value($data, $keys);

アイデアは、配列内の要素を「指す」変数があり、各キー値で分岐して更新するというものです。キーがなくなると、ポインターは結果を指します。

于 2013-07-10T20:13:01.860 に答える