2011-09-20 41 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

相关问题