2010-10-06 2 views

ответ

2
for ($index=0; $index < min(5, count($arr)); $index++) 
{ 
    echo $arr[$index]; 
} 
4

Одним из вариантов являются использование array_slice()

Чтобы показать каждый элемент с последующим разрывом строки:

echo implode("<br>", array_slice($array, 0, 5)); 

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

Для разумного подхода см. Ответ @ Svisstack (И теперь @ Gordon's).

4

См LimitIterator и ArrayIterator

$array = range(1,100); 
$iterator = new LimitIterator(new ArrayIterator($array), 0, 5); 
foreach($iterator as $key => $val) { 
    echo "$key => $val", PHP_EOL; 
} 

выходы:

0 => 1 
1 => 2 
2 => 3 
3 => 4 
4 => 5 
+0

+1 для SPL. Синтаксис кажется немного затянутым для рассматриваемого случая, но имеет смысл. Из любопытства вы знаете, как итераторы работают по памяти? Работают ли они со ссылками или будут ли строки 2 создавать копию, содержащую первые пять элементов (таким образом, занимая дополнительную память?) Возможно, стоит отдельный вопрос, хотя –

+1

@Pekka, хотя я не знаю точную информацию о реализации в C, я довольно уверен, что они работают по ссылке. Они в основном сложены декораторы. «LimitIterator» отслеживает позицию, в которой он сейчас включен, и если это превышает установленную верхнюю границу, это закончит итерацию. – Gordon

+0

+1 для нового решения PHP5 – Svisstack

Смежные вопросы