2011-09-20 87 views
0

我沒有問題,但我正在尋找其他更好或更快的解決方案。 我有兩個鍵ALL和技術的陣列:循環中可能有多個鍵嗎?

$myData = Array (
[ALL] => Array (
    [0] => Array (
    [ID_COUNTRY] => 23 
    [DELIVERY_DAYS] => 23 
    [AMOUNT] => 23 
    ) 
    [1] => Array (
    [ID_COUNTRY] => 30 
    [DELIVERY_DAYS] => 30 
    [AMOUNT] => 30 
) 
) 
[ART] => Array (
    [0] => Array (
    [ID_COUNTRY] => 10 
    [DELIVERY_DAYS] => 10 
    [AMOUNT] => 10 
) 
    [1] => Array (
    [ID_COUNTRY] => 2 
    [DELIVERY_DAYS] => 20 
    [AMOUNT] => 20 
) 
) 
) 

而且有2個foreach循環來檢查值

<?php 
foreach ($myData as $key1=>$key2) { 
    foreach ($key2 as $key=>$data) { 
    ... 
    } 
} 
?> 

可以做這樣的事情或者是使用兩個的foreach唯一的解決辦法沒有任何額外的庫循環。

<?php 
foreach($myData as $key1=>$key2=>$value) { 
echo $key1; // [ALL] or [ART] 
echo $key2; // [ALL][$key2] or [ART][$key2]; 
} 
?> 
+2

沒有,那是不可能的 – arnaud576875

+0

做一個函數來做到我只是想創建的foreach快捷任務 –

+0

,但我現在看到這是不可能的。 – JercSi

回答

3

如果你要循環您的多維數組您需要提供的代碼:

foreach ($myData as $key1=>$key2) { 
    foreach ($key2 as $key=>$data) { 
    ... 
    } 
} 

沒有辦法解決它,而無需使用一些會做到底這一點。這裏沒有速度。如果有的話,這應該是一個微型優化,你應該忽略:)

+0

我發現這是目前唯一的解決方案,正如我所料。 – JercSi

1

這是不可能的。但你可以這樣做

<?php 
foreach ($myData as $key1=>$key2) { 
    foreach ($key2 as $key=>$data) { 
    echo $key1; 
    echo $key2; 
    } 
} 
?> 
+0

這不正是OP說他有什麼? – JJJ

+0

@Juhana,我希望OP能夠清楚它們可以從嵌套的foreach循環中訪問所有的鍵 – amindfv

0

也許不完全是你在找什麼;我仍然想通知你。您可以通過多維數組遞歸循環,在組合使用RecursiveArrayIteratorRecursiveIteratorIterator

$rii = new RecursiveIteratorIterator(new RecursiveArrayIterator($myData), RecursiveIteratorIterator::SELF_FIRST); 
foreach($rii as $key => $value) 
{ 
    echo $key; 

    // you can keep track of the current depth with: 
    $depth = $rii->getDepth(); 
} 
+0

謝謝,我也會試試。 – JercSi