Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   foreach ограничение на вывод (https://javascript.ru/forum/server/14751-foreach-ogranichenie-na-vyvod.html)

Golovastik 29.01.2011 01:41

foreach ограничение на вывод
 
Как через цикл foreach вывести не весь массив а например с 1 по 2 элемент?
Если например имеем такой массив.

$a = array( //Объявлени массива
"green"  => "Зелёный",
"yellow" => "жёлтый",
"white"  => "белый",
"black"  => "Чёрный",
"blue"   => "Синий",
);

Golovastik 29.01.2011 01:50

Да, можно вот так сделать.
$i = 0;
foreach($a as $key =>$one){
$i++;
if($i >3) break;
printf("%s - %s ",$key,$one);
echo "\n";
}


Какие варианты лучше есть?

Gvozd 29.01.2011 01:53

есть как минимум два основных способа:
1)цикл foreach
перед началом цикла создаем счетчик, и при каждом исполнении тела цикла, увеличиваем его.
имеем возможность узнать какой по-счет элемент сейчас перебираем.
2)обычный цикл for
используем
функции each(), next(), или смежные с ними, и break при достижении конца массива
стоит перечитать описание всех базовых функций для работы с массивами.
их меньше полусотни, и стоит помнить хотя бы о половине из них постоянно

Gvozd 29.01.2011 02:00

Вы реализовали первый вариант(хотя и не совсем точно с индексами у вас)
Вы молодец и стараетесь. это не все делают.
ради такого дела напишу код по второму, менее очевидному варианту:
$arr=array(1,2,3,4,5);

reset($arr);
for($i = 0,$val=;$i<1;$i++) {
    $t = each($arr);
    echo $t[1].'<br>';
}


PS ваш вариант предпочтительней. сам так делаю.
вам только надо привыкнуть к правильной индексации. то есть считать надо не с единицы, а с нуля.

Gozar 29.01.2011 19:44

удалено.

Vulkan 29.01.2011 19:50

Цитата:

Сообщение от Gozar (Сообщение 90386)
,$val= очепятка?

нет, инициализация переменных цикла, если их несколько то через запятую.

monolithed 29.01.2011 20:07

Цитата:

Сообщение от Vulkan
нет, инициализация переменных цикла, если их несколько то через запятую.

в этом случае:
Цитата:

Сообщение от Gozar
очепятка


Vulkan 29.01.2011 21:00

тьфу блин, я думал Gozar имеет ввиду запятую.

Gvozd 29.01.2011 22:59

факир был пьян, и фокус не удался =)

PeaceCoder 30.01.2011 01:19

Цитата:

Сообщение от Gvozd
факир был пьян, и фокус не удался =)

а я подумал, это специально что бы не нашару решение было а человек подумал где собака порылась


Часовой пояс GMT +3, время: 09:09.