но это не будет работать с ассоциативными массивами. ключи теряются.
ЭСКОБАР 06
4
@ESCOBAR: ассоциативные массивы не обязательно имеют порядок, они только сопоставляют ключи со значениями; так что «значения от 3 до 7» в любом случае не имеют смысла…
knittl 06
верно, но в данном случае это не связано с порядком. это примерно первые 5 пунктов. и вы не можете использовать здесь array_slice.
ЭСКОБАР
2
@ESCOBAR: нет первых элементов, если у вас нет определенного порядка. «Первый» работает только в том случае, если вы можете сказать, какой элемент стоит до или после других элементов. Но просто для удовольствия вы можете повторно комбинировать ключи со значениями массива (хотя до сих пор нет определенного порядка):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl
1
@darkhorizon: « array_sliceвозвращает часть массива». Но я отредактирую свой ответ, чтобы было немного понятнее.
$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) для длины.
синтаксис для возврата первых 5 элементов: array_splice ($ input, 5)
aland
@AndrejsCainikovs Согласно php.net, «Если длина не указана, то в последовательности будет все, от смещения до конца массива». Полужирный текст ответа говорит об обратном.
Зачем вам оборачивать существующее, array_slice()которое уже выполняет работу, в эту ненужную функцию, которая добавляет накладные расходы и не имеет ценности?
aexl
0
Вы можете использовать функцию array_slice, но будете ли вы использовать другие значения? или только первые 5? потому что, если вы будете использовать только первые 5, вы можете использовать LIMIT в SQL.
Ответы:
array_slice
возвращает кусок массива$sliced_array = array_slice($array, 0, 5)
это код, который вы хотите в вашем случае, чтобы вернуть первые пять элементов
источник
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
возвращает часть массива». Но я отредактирую свой ответ, чтобы было немного понятнее.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) для длины.
источник
Если вы просто хотите вывести первые 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 ); } ?>
источник
array_slice()
которое уже выполняет работу, в эту ненужную функцию, которая добавляет накладные расходы и не имеет ценности?Вы можете использовать функцию array_slice, но будете ли вы использовать другие значения? или только первые 5? потому что, если вы будете использовать только первые 5, вы можете использовать LIMIT в SQL.
источник
Более объектно-ориентированным способом было бы предоставить диапазон методу # []. Например:
Допустим, вам нужны первые 3 элемента из массива.
числа = [1,2,3,4,5,6]
числа [0..2] # => [1,2,3]
Допустим, вам нужны первые x элементов из массива.
числа [0..x-1]
Самое замечательное в этом методе заключается в том, что если вы запрашиваете больше элементов, чем имеет массив, он просто возвращает весь массив.
числа [0..100] # => [1,2,3,4,5,6]
источник