我的关联数组:
$arr = array( 1 => "Value1", 2 => "Value2", 10 => "Value10" );
使用下面的代码,$v被$arr的值填充
$v
$arr
foreach ($arr as $v){ echo $v; // Value1, Value2, Value10 }
我如何获得$arr的键代替?
foreach (.....){ echo $k; // 1, 2, 10 }
如果你使用array_keys(), PHP会给你一个只包含键的数组:
array_keys()
$keys = array_keys($arr); foreach ($keys as $key) { echo $key; }
或者,你可以这样做:
foreach ($arr as $key => $value) { echo $key; }
下面的操作将允许您同时获得键和值。
foreach ($arr as $key => $value) { echo($key); }
foreach($array as $k => $v)
其中$k是键,$v是值
如果你只需要键,请使用array_keys()
你可以:
如PHP文档中所述。
foreach($arr as $key=>$value){ echo($key); // key }
哦,我在PHP手册找到的。
foreach ($array as $key => $value){ statement }
在每次循环中,当前元素的键将被赋值给变量美元的关键。
使用$key => $val获取键:
$key => $val
<?php $arr = array( 1 => "Value1", 2 => "Value2", 10 => "Value10", ); foreach ($arr as $key => $val) { print "$key\n"; } ?>
虽然可以说不太清楚,但这种方法的速度大约是3.5倍(至少在我用来测试的盒子上)
$foo = array( 1 => "Value1", 2 => "Value2", 10 => "Value10" ); while($bar = each($foo)){ echo $bar[0] . " => " . $bar[1]; }
我可以想象,这是因为foreach在迭代数组之前复制了整个数组。
我使用下面的循环从关联数组中获取键和值
foreach ($array as $key => $value) { echo "<p>$key = $value</p>"; }
没有人回答常规for循环?有时我发现它更有可读性,更喜欢for而不是foreach 这里是
for
foreach
$array = array('key1' => 'value1', 'key2' => 'value2'); $keys = array_keys($array); for($i=0; $i < count($keys); ++$i) { echo $keys[$i] . ' ' . $array[$keys[$i]] . "\n"; } /* prints: key1 value1 key2 value2 */
<?php $names = array("firstname"=>"maurice", "lastname"=>"muteti", "contact"=>"7844433339"); foreach ($names as $name => $value) { echo $name." ".$value."</br>"; } print_r($names); ?>
如果使用嵌套foreach()函数,则外部数组的键会反复打印,直到内部数组的值结束。
foreach()
<?php $myArray = ['key_1' => ['value_1', 'value12'], 'key_2' => ['value_2', 'value22'], 'key_3' => ['value_3', 'value32'] ]; $keysOfMyArray = array_key($myArray); for ($x = 0; $x < count($myArray); $x++){ print "\t".$keysOfMyArray[$x]."\t\t".implode("\t\t",$myArray[$keysOfMyArray[$x]]."\n"); } ?>