2011-08-03 76 views
2

我对PHP仍然很陌生,从所有的例子中,他们似乎都使用foreach语句。foreach()的替代方法PHP?

例如

foreach ($variable as $row) 

不过,我不认为我应该用这一切的时候,例如变量或对象我有一个只在一个数组一行或实例。

我知道它有利于将它们用于多行,如果您使用for循环可能会漏掉它们。

但我真的需要使用它只是回声一个数组中的变量?

例如例如这个变量$统计

array(3) { ["user_interventions"]=> int(4) ["fastest_intervention"]=> array(1) { [0]=> object(stdClass)#22 (1) { ["duration"]=> string(8) "02:10:00" } } ["slowest_intervention"]=> array(1) { [0]=> object(stdClass)#23 (1) { ["duration"]=> string(8) "02:26:00" } } } 

感谢

+0

like ... $ stats [“user_interventions”]? – Fosco

+0

我从来没见过有人故意使用foreach循环从已知结构变量中只打印一个值。我认为你的问题的前提是不正确的。你不需要使用循环,只需'echo $ array ['keyname']','echo $ object-> propertyname'等等。 –

+0

但有时如果我不使用一个foreach它说“试图获得非对象的属性”,但如果我使用foreach循环它修复了这个['0']在结尾处的意思是什么 – sqlmole

回答

1

不,你不需要使用每次需要访问数组值时,循环使用foreach循环。你的例子可以用下面的方式...

echo $stats['fastest_intervention']['0']->duration; // Outputs: 02:10:00 

这是你的变量转储与缩进(使其更容易阅读)。

array(3) { 
    ["user_interventions"]=> int(4) 
    ["fastest_intervention"]=> array(1) { 
     [0]=> object(stdClass)#22 (1) { 
      ["duration"]=> string(8) "02:10:00" 
     } 
    } 
    ["slowest_intervention"]=> array(1) { 
     [0]=> object(stdClass)#23 (1) { 
      ["duration"]=> string(8) "02:26:00" 
     } 
    } 
} 
+0

?是它在阵列中的位置?数组标识符是什么 – sqlmole

+0

数组以键和值的组合来表示。 'durations'是嵌套对象'0'的一个属性,'0'是分配给嵌套在'highest_intervention'数组内的对象的键。 – 65Fbef05

+0

这与C++中的数组是相同的,它只是略有不同。 – sqlmole

4

,如果你知道你的数组中的值的“地址”,那么就没有必要为一个循环:

echo $arr['user_interventions'][0]['duration']; // 02:10:00 

更多细节here

0

您只需使用[]访问变量。 print $array['key']

1

你不必在这里使用foreach但你不能随便print $array

如果数组的索引,你可以打印出类似这样:

print 'Key is '.$array['key'].' but index is only'.$array['index'];