Как получить текущий индекс в цикле foreach
?
foreach ($arr as $key => $val)
{
// How do I get the index?
// How do I get the first element in an associative array?
}
Как получить текущий индекс в цикле foreach
?
foreach ($arr as $key => $val)
{
// How do I get the index?
// How do I get the first element in an associative array?
}
В вашем примере кода это будет просто $key
.
Если вы хотите узнать, например, если это первая, вторая или я th итерация цикла, это ваш единственный вариант:
$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
. Это комбо ответов Кипа и Гнарфа.
$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 - это индекс каждого элемента $массив
Вы можете получить значение индекса с помощью этого
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
}
Текущий индекс - это значение $key
. И для другого вопроса вы также можете использовать:
current($arr)
чтобы получить первый элемент любого массива, предполагая, что вы не используете next()
, prev()
или другие функции для изменения внутреннего указателя массива.
$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)
хорошо, так как это первый хит Google для этой проблемы:
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]);
}