Если у меня есть массив с 100 элементами, то как я могу эхо/показать только 5 лучших?Как эхо определенное количество элементов из PHP Array
Спасибо :)
Если у меня есть массив с 100 элементами, то как я могу эхо/показать только 5 лучших?Как эхо определенное количество элементов из PHP Array
Спасибо :)
for ($index=0; $index < min(5, count($arr)); $index++)
{
echo $arr[$index];
}
Одним из вариантов являются использование array_slice()
Чтобы показать каждый элемент с последующим разрывом строки:
echo implode("<br>", array_slice($array, 0, 5));
не подходит для массивов, содержащих огромного количество данных, потому что срез будет копией, но элегантным для обычного повседневного использования.
Для разумного подхода см. Ответ @ Svisstack (И теперь @ Gordon's).
См 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
+1 для SPL. Синтаксис кажется немного затянутым для рассматриваемого случая, но имеет смысл. Из любопытства вы знаете, как итераторы работают по памяти? Работают ли они со ссылками или будут ли строки 2 создавать копию, содержащую первые пять элементов (таким образом, занимая дополнительную память?) Возможно, стоит отдельный вопрос, хотя –
@Pekka, хотя я не знаю точную информацию о реализации в C, я довольно уверен, что они работают по ссылке. Они в основном сложены декораторы. «LimitIterator» отслеживает позицию, в которой он сейчас включен, и если это превышает установленную верхнюю границу, это закончит итерацию. – Gordon
+1 для нового решения PHP5 – Svisstack