How do I get the current index in a foreach
loop?
foreach( $arr as $key=>$val)
{
//how to get index?
//how to get first element in an associated array
}
How do I get the current index in a foreach
loop?
foreach( $arr as $key=>$val)
{
//how to get index?
//how to get first element in an associated array
}
$key
is the index for the current array element, and $val
is the value of that array element.
The first element has an index of 0. Therefore, to access it, use $arr[0]
To get the first element of the array, use this
$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
In your sample code, it would just be $key
.
If you want to know, for example, if this is the first, second, or ith iteration of the loop, this is your only option:
$i = -1;
foreach($arr as $val) {
$i++;
//$i is now the index. if $i == 0, then this is the first element.
...
}
Of course, this doesn't mean that $val == $arr[$i]
because the array could be an associative array.
$i = 0;
foreach ($arr as $key => $val) {
if ($i === 0) {
// first index
}
// current index is $i
$i++;
}
The current index is the value of $key
. And for the other question, you can also use:
current($arr)
to get the first element of any array, assuming that you aren't using the next()
, prev()
or other functions to change the internal pointer of the array.
You could get the first element in the array_keys()
function as well. Or array_search()
the keys for the "index" of a key. If you are inside a foreach
loop, the simple incrementing counter (suggested by kip or cletus) is probably your most efficient method though.
<?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)
$the_index = 0;
foreach( $arr as $key => $val ) {
echo "Index: " . $key . " > Value: " . $val[$the_index];
}