foreach
ループで現在のインデックスを取得するにはどうすればよいですか?
foreach ($arr as $key => $val)
{
// How do I get the index?
// How do I get the first element in an associative array?
}
サンプルコードでは、$key
。
たとえば、これが1番目、2番目、またはi番目 ループの反復、これが唯一のオプションです:
$i = -1;
foreach($arr as $val) {
$i++;
//$i is now the index. if $i == 0, then this is the first element.
...
}
もちろん、これは$val == $arr[$i]
配列が連想配列になる可能性があるため。
これはこれまでで最も網羅的な答えであり、$i
変数が浮かんでいる必要性を取り除きます。これは、KipとGnarfの回答のコンボです。
$array = array( 'cat' => 'meow', 'dog' => 'woof', 'cow' => 'moo', 'computer' => 'beep' );
foreach( array_keys( $array ) as $index=>$key ) {
// display the current index + key + value
echo $index . ':' . $key . $array[$key];
// first index
if ( $index == 0 ) {
echo ' -- This is the first element in the associative array';
}
// last index
if ( $index == count( $array ) - 1 ) {
echo ' -- This is the last element in the associative array';
}
echo '<br>';
}
それが誰かを助けることを願っています。
$i = 0;
foreach ($arr as $key => $val) {
if ($i === 0) {
// first index
}
// current index is $i
$i++;
}
foreach($array as $key=>$value) {
// do stuff
}
$ keyは各$ array要素のインデックスです
現在のインデックスは_$key
_の値です。また、他の質問については、次のものも使用できます。
_current($arr)
_
next()
、prev()
またはその他の関数を使用して配列の内部ポインターを変更しないと仮定して、配列の最初の要素を取得します。
これでインデックス値を取得できます
foreach ($arr as $key => $val)
{
$key = (int) $key;
//With the variable $key you can get access to the current array index
//You can use $val[$key] to
}
これはこの問題の最初のグーグルヒットであるためです:
function mb_tell(&$msg) {
if(count($msg) == 0) {
return 0;
}
//prev($msg);
$kv = each($msg);
if(!prev($msg)) {
end($msg);
print_r($kv);
return ($kv[0]+1);
}
print_r($kv);
return ($kv[0]);
}
$key
は現在の配列要素のインデックスであり、$val
はその配列要素の値です。
最初の要素のインデックスは0です。したがって、それにアクセスするには、$arr[0]
を使用します
配列の最初の要素を取得するには、これを使用します
$firstFound = false;
foreach($arr as $key=>$val)
{
if (!$firstFound)
$first = $val;
else
$firstFound = true;
// do whatever you want here
}
// now ($first) has the value of the first element in the array
array_keys()
関数の最初の要素も取得できます。または array_search()
キーの「インデックス」のキー。 foreach
ループ内にいる場合は、単純なインクリメントカウンター(kipまたはcletusで推奨)がおそらく最も効率的な方法です。
<?php
$array = array('test', '1', '2');
$keys = array_keys($array);
var_dump($keys[0]); // int(0)
$array = array('test'=>'something', 'test2'=>'something else');
$keys = array_keys($array);
var_dump(array_search("test2", $keys)); // int(1)
var_dump(array_search("test3", $keys)); // bool(false)