Как перебрать ассоциативный массив и получить ключ? - PullRequest
153 голосов
/ 23 декабря 2009

Мой ассоциативный массив:

$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
 }

Ответы [ 12 ]

302 голосов
/ 23 декабря 2009

Вы можете сделать:

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

Как описано в PHP документах .

64 голосов
/ 23 декабря 2009

Если вы используете array_keys(), PHP предоставит вам массив, заполненный только ключами:

$keys = array_keys($arr);
foreach($keys as $key) {
    echo($key);
}

В качестве альтернативы, вы можете сделать это:

foreach($arr as $key => $value) {
    echo($key);
}
30 голосов
/ 19 октября 2016

Никто не ответил с обычным циклом 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
*/
10 голосов
/ 23 декабря 2009
foreach($array as $k => $v)

Где $ k - это ключ, а $ v - это значение

Или, если вам просто нужны ключи, используйте array_keys ()

7 голосов
/ 26 августа 2015

Я использую следующий цикл, чтобы получить ключ и значение из ассоциативного массива

foreach ($array as $key => $value)
{
  echo "<p>$key = $value</p>";
}
4 голосов
/ 08 июля 2014

Хотя этот метод, возможно, и менее понятен, он быстрее примерно в 3,5 раза (по крайней мере, на той коробке, которую я тестировал)

$foo = array(
    1 => "Value1",
    2 => "Value2",
    10 => "Value10"
);
while($bar = each($foo)){
    echo $bar[0] . " => " . $bar[1];
}

Я бы предположил, что это связано с тем, что foreach копирует весь массив перед его итерацией.

4 голосов
/ 23 декабря 2009

Следующее позволит вам одновременно получить ключ и значение.

foreach ($arr as $key => $value)
{
  echo($key);
}
1 голос
/ 07 июня 2017
<?php
$names = array("firstname"=>"maurice",
               "lastname"=>"muteti", 
               "contact"=>"7844433339");

foreach ($names as $name => $value) {
    echo $name." ".$value."</br>";
}

print_r($names);
?>
1 голос
/ 23 декабря 2009

Используйте $key => $val, чтобы получить ключи:

<?php

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

foreach ($arr as $key => $val) {
   print "$key\n";
}

?>
1 голос
/ 23 декабря 2009

О, я нашел это в руководстве по PHP .

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

Ключ текущего элемента будет назначен переменной $ key в каждом цикле.

...