私の連想配列:
$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
}
array_keys()
を使用する場合、PHPはキーだけで満たされた配列を提供します:
$keys = array_keys($arr);
foreach($keys as $key) {
echo($key);
}
または、これを行うことができます:
foreach($arr as $key => $value) {
echo($key);
}
誰も通常の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
*/
foreach($array as $k => $v)
$ kはキーで、$ vは値です
または、キーが必要な場合はarray_keys()を使用します
次のループを使用して、連想配列からキーと値を取得します
foreach ($array as $key => $value)
{
echo "<p>$key = $value</p>";
}
おそらくあまり明確ではありませんが、この方法は約3.5倍速くなります(少なくともテストに使用したボックスでは)
$foo = array(
1 => "Value1",
2 => "Value2",
10 => "Value10"
);
while($bar = each($foo)){
echo $bar[0] . " => " . $bar[1];
}
これは、foreachが反復する前に配列全体をコピーするという事実によるものだと思います。
以下を使用すると、キーと値の両方を同時に取得できます。
foreach ($arr as $key => $value)
{
echo($key);
}
<?php
$names = array("firstname"=>"maurice",
"lastname"=>"muteti",
"contact"=>"7844433339");
foreach ($names as $name => $value) {
echo $name." ".$value."</br>";
}
print_r($names);
?>
ああ PHPマニュアル で見つけました。
foreach ($array as $key => $value){
statement
}
現在の要素のキーは、各ループで変数$ keyに割り当てられます。
$key => $val
を使用してキーを取得します。
<?php
$arr = array(
1 => "Value1",
2 => "Value2",
10 => "Value10",
);
foreach ($arr as $key => $val) {
print "$key\n";
}
?>
ネストされた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
}