Как определить первую запись в цикле foreach

199
23 мая 2018, 12:10

есть массив, после прохождения по массиву циклом foreach нужно определить первую запись к примеру:

foreach ($nav as $item) {
}

Прошу помощи в реализации.

Answer 1

Надо использовать другой вид foreach:

$keys = array_keys( $nav );
foreach ($nav as $key => $item) {
     if ( $keys[0] === $key) {
         // это первая запись
    }
} 
Answer 2
$first = TRUE;
foreach ($ARRAY as $item) {
    if ($first == TRUE) {
        // первый
        $first = FALSE;
    }
}

И еще вариант:

reset($ARRAY);
$first = key($ARRAY);
foreach($ARRAY as $key => $item) {
    if ($key === $first) {
        // первый
    }
}

На самом деле варианты можно всю вечность накидывать.

Answer 3

Можно просто запустить цикл ровно на одну итерацию, и прервать его выполнение. После этого в переменной $item будет сохранён первый элемент:

$array = ['key' => 'Первый элемент', 2, 3, 4, 5, 6, 7];
foreach ($array as $item) break;
echo $item;

Но можно обойтись и без цикла:

echo array_shift($array);
Answer 4

foreach в php не имеет счётчика итераций, поэтому придётся посчитать самим. Это совсем не сложно:

$i = 0;
foreach ($arr as $val) {
    if ($i === 0) {
        // первая итерация
    }
    ++$i;
}

Удивительно, но этот же метод позволит определить последнюю итерацию и какую-нибудь кратную итерацию!

$i = 0;
$lastPos = count($arr) - 1;
foreach ($arr as $val) {
    if ($i === 0) {
        // первая итерация
    }
    if ($i === $lastPos) {
        // последняя итерация
    }
    if ($i % 2) {
        // каждая чётная итерация
    }
    ++$i;
}

Если вам нужно просто первый элемент массива получить без обхода массива, используйте reset.

READ ALSO
Symfony 2.3.6 - smtp не отправляет письма, если не задан delivery_address

Symfony 2.3.6 - smtp не отправляет письма, если не задан delivery_address

Несколько дней назад smtp через Яндекс перестал работатьПробовал почистить кеш, но это не помогло

201
Разделение html sitemap

Разделение html sitemap

Есть страница с html sitemapНа этой странице находится порядка 2000 ссылок

224
Вводится координата (х и у) . Определить попадает ли эта координата в закрашенную область

Вводится координата (х и у) . Определить попадает ли эта координата в закрашенную область

Определить попадает ли точка в закрашенную область или нетНужна функция на PHP или JS или хотя бы формулу с объяснением

193