2009-10-15 3 views

ответ

217

array_slice возвращает часть массива с

$sliced_array = array_slice($array, 0, 5) 

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

+0

, но это не будет работать с ассоциативными массивами. ключи теряются. – ESCOBAR

+3

@ESCOBAR: ассоциативные массивы не обязательно имеют порядок, они отображают только ключи к значениям; поэтому «значения от 3 до 7» на самом деле не имеют никакого смысла ... – knittl

+0

вправо, но в этом случае он не имеет отношения к заказу. это примерно первые 5 предметов. и здесь вы не можете использовать array_slice. – ESCOBAR

6

array_splice - Удалите часть массива и заменить его чем-то другим:

$input = array(1, 2, 3, 4, 5, 6); 
array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5) 

Из PHP инструкции:

array array_splice (array &$input , int $offset [, int $length = 0 [, mixed $replacement]]) 

Если длина опущена, удаляет все от смещения до конца массива. Если длина указана и положительна, то многие элементы будут удалены. Если длина указана и отрицательна, то конец удаленной части будет состоять из множества элементов из конца массива. Совет. Чтобы удалить все из смещения в конец массива, когда указана замена, используйте count ($ input) для длины.

+0

Синтаксис для возврата первых 5 элементов: array_splice ($ input, 5) – aland

+0

Спасибо, исправлено. –

+0

@AndrejsCainikovs Согласно php.net, «Если длина опущена, то последовательность будет иметь все от смещения до конца массива». В полуживом текста ответа указано точно противоположное. – Kalko

1

Если вы просто хотите вывести первые 5 элементов, вы должны написать что-то вроде:

<?php 

    if (!empty ($an_array)) { 

    $min = min (count ($an_array), 5); 

    $i = 0; 

    foreach ($value in $an_array) { 

     echo $value; 
     $i++; 
     if ($i == $min) break; 

    } 

    } 

?> 

Если вы хотите, чтобы написать функцию, которая возвращает часть массива, вы должны использовать array_slice:

<?php 

    function GetElements($an_array, $elements) { 
    return array_slice($an_array, 0, $elements); 
    } 

?> 
0

Вы можете использовать функцию array_slice, но будете ли вы использовать другие значения? или только первые 5? потому что если вы будете использовать только первые 5, вы можете использовать LIMIT на SQL.

-3

Более объектно ориентированным способом было бы предоставить диапазон методу # []. Например:

Скажите, что вы хотите получить первые 3 элемента из массива.

числа = [1,2,3,4,5,6]

числа [0..2] # => [1,2,3]

Допустим, вы хотите первый х элементы из массива.

числа [0..x-1]

Большая вещь об этом методе, если вы просите больше деталей, чем в массиве, он просто возвращает весь массив.

номера [0..100] # => [1,2,3,4,5,6]

+3

Но php не поддерживает диапазоны. Вы уверены, что не говорите о рубине или что-то в этом роде? –

+1

«Более объектно-ориентированный способ»? Этот ответ не имеет ничего общего с объектно-ориентированным программированием. – Ducky