mas isso não funcionará com matrizes associativas. as chaves se perdem.
ESCOBAR
4
@ ESCOBAR: matrizes associativas não necessariamente têm um pedido, elas apenas mapeiam chaves para valores; assim "valores de 3 a 7" realmente não faz sentido de qualquer maneira ...
knittl
certo, mas neste caso não está relacionado à ordem. trata-se apenas dos 5 primeiros itens. e você não pode usar array_slice aqui.
ESCOBAR
2
@ ESCOBAR: não existem primeiros itens se você não tiver uma ordem definida. "Primeiro" só funciona se você puder dizer qual item vem antes ou depois de outros itens. Mas apenas para se divertir, você pode voltar a combinar as chaves com os valores do array (embora haja ordem ainda não definido):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl
1
@arkhorizon: " array_sliceretorna uma fatia de uma matriz". Mas vou editar minha resposta para torná-la um pouco mais clara.
knittl
9
array_splice - Remova uma parte da matriz e substitua-a por outra coisa:
$input = array(1,2,3,4,5,6);
array_splice($input,5);// $input is now array(1, 2, 3, 4, 5)
Se o comprimento for omitido, remove tudo do deslocamento até o final da matriz . Se o comprimento for especificado e for positivo, muitos elementos serão removidos. Se o comprimento for especificado e for negativo, o final da parte removida será o número de elementos do final da matriz. Dica: para remover tudo do deslocamento até o final da matriz quando a substituição também for especificada, use count ($ input) para o comprimento.
a sintaxe para retornar primeiros 5 elementos é array_splice ($ entrada, 5)
aland
@AndrejsCainikovs Conforme php.net, "Se o comprimento for omitido, a sequência terá tudo, desde o deslocamento até o final da matriz." O texto em negrito da resposta indica exatamente o oposto.
Você pode usar a função array_slice, mas você usará outros valores? ou apenas os 5 primeiros? porque se você usar apenas os 5 primeiros, poderá usar o LIMIT no SQL.
Respostas:
array_slice
retorna uma fatia de uma matrizé o código que você deseja no seu caso para retornar os cinco primeiros elementos
fonte
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
retorna uma fatia de uma matriz". Mas vou editar minha resposta para torná-la um pouco mais clara.array_splice - Remova uma parte da matriz e substitua-a por outra coisa:
Do manual do PHP:
Se o comprimento for omitido, remove tudo do deslocamento até o final da matriz . Se o comprimento for especificado e for positivo, muitos elementos serão removidos. Se o comprimento for especificado e for negativo, o final da parte removida será o número de elementos do final da matriz. Dica: para remover tudo do deslocamento até o final da matriz quando a substituição também for especificada, use count ($ input) para o comprimento.
fonte
Se você quiser apenas produzir os 5 primeiros elementos, escreva algo como:
Se você deseja escrever uma função que retorna parte da matriz, use array_slice:
fonte
Você pode usar a função array_slice, mas você usará outros valores? ou apenas os 5 primeiros? porque se você usar apenas os 5 primeiros, poderá usar o LIMIT no SQL.
fonte
Uma maneira mais orientada a objetos seria fornecer um intervalo para o método # []. Por exemplo:
Digamos que você queira os 3 primeiros itens de uma matriz.
number = [1,2,3,4,5,6]
números [0..2] # => [1,2,3]
Digamos que você queira os primeiros x itens de uma matriz.
números [0..x-1]
O melhor deste método é que, se você pedir mais itens do que a matriz, ela simplesmente retornará a matriz inteira.
números [0..100] # => [1,2,3,4,5,6]
fonte