PHP - получение индекса элемента из массива - PullRequest
23 голосов
/ 22 сентября 2010

Как я могу получить текущий номер элемента при обходе массива?

Я знаю о count (), но я надеялся, что есть встроенная функция для получения текущего индекса поля без добавления дополнительной переменной счетчика.

как это:

foreach($array as $key => value)
  if(index($key) == count($array) ....

Ответы [ 6 ]

48 голосов
/ 22 сентября 2010

Вы должны использовать функцию key () .

key($array)

должен вернуть текущий ключ.

Если вам нужна позиция текущего ключа:

array_search($key, array_keys($array));
11 голосов
/ 22 сентября 2010

Массивы PHP как целочисленные, так и строковые. Вы даже можете смешать их:

array('red', 'green', 'white', 'color3'=>'blue', 3=>'yellow');

Что вы хотите, чтобы индекс был для значения 'blue'? Это 3? Но на самом деле это индекс значения 'yellow', так что это будет двусмысленность.

Другое решение для вас - привести массив к целочисленному списку значений.

foreach (array_values($array) as $i => $value) {
  echo "$i: $value\n";
}

Выход:

0: red
1: green
2: white
3: blue
4: yellow
4 голосов
/ 22 сентября 2010
foreach() {
    $i++;
    if(index($key) == $i){}
    //
}
0 голосов
/ 12 января 2016
function Index($index) {
    $Count = count($YOUR_ARRAY);
    if ($index <= $Count) {
        $Keys = array_keys($YOUR_ARRAY);
        $Value = array_values($YOUR_ARRAY);
        return $Keys[$index] . ' = ' . $Value[$index];
    } else {
        return "Out of the ring";
    }
}

echo 'Index : ' . Index(0);

Заменить ($ YOUR_ARRAY)

0 голосов
/ 22 сентября 2010

массив не содержит индекса, когда элементы являются ассоциативными. Массив в php может содержать смешанные значения, такие как:

$var = array("apple", "banana", "foo" => "grape", "carrot", "bar" => "donkey");   
print_r($var);

Дает вам:

Array
(
    [0] => apple
    [1] => banana
    [foo] => grape
    [2] => carrot
    [bar] => donkey
)

Чего вы пытаетесь достичь, поскольку вам нужно значение индекса в ассоциативном массиве?

0 голосов
/ 22 сентября 2010

Нет способа получить позицию , которую вы действительно хотите.
Для ассоциативного массива, чтобы определить последнюю итерацию, вы можете использовать уже упомянутую переменную счетчика или сначала определить ключ последнего элемента:

end($array);
$last = key($array);
foreach($array as $key => value)
  if($key == $last) ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...