如何循环通过一个关联数组并获得键?

我的关联数组:

$arr = array(
1 => "Value1",
2 => "Value2",
10 => "Value10"
);

使用下面的代码,$v$arr的值填充

 foreach ($arr as $v){
echo $v;    // Value1, Value2, Value10
}

我如何获得$arr的键代替?

 foreach (.....){
echo $k;    // 1, 2, 10
}
364673 次浏览

如果你使用array_keys(), PHP会给你一个只包含键的数组:

$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()

你可以:

foreach ($arr as $key => $value) {
echo $key;
}

PHP文档中所述。

 foreach($arr as $key=>$value){
echo($key);    // key
}

哦,我在PHP手册找到的。

foreach ($array as $key => $value){
statement
}

在每次循环中,当前元素的键将被赋值给变量美元的关键

使用$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
这里是

$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()函数,则外部数组的键会反复打印,直到内部数组的值结束。

<?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");
}


?>