web-dev-qa-db-ja.com

連想配列をループしてキーを取得する方法は?

私の連想配列:

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

できるよ:

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

PHP docs で説明されています。

298
codaddict

array_keys()を使用する場合、PHPはキーだけで満たされた配列を提供します:

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

または、これを行うことができます:

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

誰も通常の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
*/
30
MuhsinFatih
foreach($array as $k => $v)

$ kはキーで、$ vは値です

または、キーが必要な場合はarray_keys()を使用します

10
Htbaa

次のループを使用して、連想配列からキーと値を取得します

foreach ($array as $key => $value)
{
  echo "<p>$key = $value</p>";
}
7
dmeehan

おそらくあまり明確ではありませんが、この方法は約3.5倍速くなります(少なくともテストに使用したボックスでは)

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

これは、foreachが反復する前に配列全体をコピーするという事実によるものだと思います。

4
nettux

以下を使用すると、キーと値の両方を同時に取得できます。

foreach ($arr as $key => $value)
{
  echo($key);
}
4
Jeff Beck
<?php
$names = array("firstname"=>"maurice",
               "lastname"=>"muteti", 
               "contact"=>"7844433339");

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

print_r($names);
?>
1
maurice

ああ PHPマニュアル で見つけました。

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

現在の要素のキーは、各ループで変数$ keyに割り当てられます。

1
Robinicks

$key => $valを使用してキーを取得します。

<?php

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

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

?>
1
ℝaphink

ネストされた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");
}

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