2011-07-02 4 views
-2

私はこれに、このforループで使用する配列から値をマップする方法はありますか?

Array 
(
    [0] => feed 
    [1] => entry 
) 

を有効にするにはどうすればよい:

foreach ($data->feed->entry as $item) { // Yep, we made it } 

最初の配列は、任意の数の値を持つことができるので、解決策を柔軟にする必要があります。

編集: ドッグベルトは私に完璧な答えを与えましたが、将来このことをより明確にするためです。私が持っているのは一つの配列だけです。それに基づいて、私はオブジェクトから配列を取得する必要があります。だから私の配列はまた、次のようになります。

[0] => world 
[1] => countries 
[2] => finland 
[3] => helsinki 
[4] => people 

そして私は取得する必要があります:あなたがループ内でのキー=>値が必要な場合は

foreach ($data->world->countries->finland->helsinki->people as $item) {} 
+1

もっと多くの情報を提供する必要があると思います。 'foreach'は配列を反復するためのものです。私。 '$ data'がこの配列で、' foreach($ data as $ item) 'を持っていれば、' $ item'は 'feed'と' entry'の値を持ちます。あなたが '$ data-> feed-> entry'に投稿した配列構造からどのように取得したいのか分かりません。 –

+0

これは何が問題なのですか?あなたはあなたの質問を詳しく教えていただけますか? –

+0

私は自分の質問を短くして、まっすぐに留めようとしました。誤解を招いて申し訳ありません。もっと明確にするために別の例を追加しました。 – Antti

答えて

0
function map_property($obj, $array) { 
    $ret = $obj; 
    foreach($array as $prop) { 
    $ret = $ret->$prop; 
    } 
    return $ret; 
} 

foreach(map_property($data, array('feed', 'entry')) as $item) { } 
+0

ああ...それは意味をなさないかもしれません:) –

+0

まさに私が探していたもの、ありがとう! – Antti

0

をこのようにそれを実行します。

foreach ($data->feed->entry as $key=>$item) { 
// Yep, we made it 
echo 'This is key:'.$key.' this is item: '.$item; 
} 

あなたが得る結果となり

ティ0はこれですitem:feedThis is key:1これはitem:entryです

関連する問題