ale to nie zadziała z tablicami asocjacyjnymi. klucze się zgubiły.
ESCOBAR
4
@ESCOBAR: tablice asocjacyjne niekoniecznie mają kolejność, odwzorowują tylko klucze na wartości; więc „wartości od 3 do 7” i tak nie mają sensu…
knittl
racja, ale w tym przypadku nie jest to związane z zamówieniem. chodzi tylko o pierwsze 5 pozycji. i nie możesz tutaj użyć array_slice.
ESCOBAR
2
@ESCOBAR: nie ma pierwszych pozycji, jeśli nie masz zdefiniowanego zamówienia. „Pierwszy” działa tylko wtedy, gdy możesz stwierdzić, który element pojawia się przed innymi elementami lub po nich. Ale dla zabawy możesz ponownie połączyć klucze z wartościami tablicy (chociaż nadal nie ma zdefiniowanej kolejności):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl
1
@darkhorizon: " array_slicezwraca wycinek tablicy". Ale zredaguję swoją odpowiedź, aby była trochę jaśniejsza.
knittl
9
array_splice - Usuń część tablicy i zastąp ją czymś innym:
$input = array(1,2,3,4,5,6);
array_splice($input,5);// $input is now array(1, 2, 3, 4, 5)
Jeśli pominięto długość, usuwa wszystko od przesunięcia do końca tablicy . Jeśli długość jest określona i jest dodatnia, to wiele elementów zostanie usuniętych. Jeśli długość jest określona i jest ujemna, koniec usuniętej części będzie odpowiadał liczbie elementów od końca tablicy. Wskazówka: aby usunąć wszystko od przesunięcia do końca tablicy, gdy określono również zamianę, użyj count ($ input) jako długości.
składnia do zwrócenia pierwszych 5 elementów to array_splice ($ input, 5)
aland
@AndrejsCainikovs Jak na php.net, „Jeśli pominięto długość, sekwencja będzie miała wszystko od przesunięcia do końca tablicy”. Pogrubiony tekst odpowiedzi jest dokładnie odwrotny.
Możesz użyć funkcji array_slice, ale czy użyjesz innych wartości? czy tylko pierwsze 5? ponieważ jeśli użyjesz tylko pierwszych 5, możesz użyć LIMITU w SQL.
Odpowiedzi:
array_slice
zwraca wycinek tablicyto kod, który ma w twoim przypadku zwrócić pierwszych pięć elementów
źródło
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
zwraca wycinek tablicy". Ale zredaguję swoją odpowiedź, aby była trochę jaśniejsza.array_splice - Usuń część tablicy i zastąp ją czymś innym:
Z instrukcji PHP:
Jeśli pominięto długość, usuwa wszystko od przesunięcia do końca tablicy . Jeśli długość jest określona i jest dodatnia, to wiele elementów zostanie usuniętych. Jeśli długość jest określona i jest ujemna, koniec usuniętej części będzie odpowiadał liczbie elementów od końca tablicy. Wskazówka: aby usunąć wszystko od przesunięcia do końca tablicy, gdy określono również zamianę, użyj count ($ input) jako długości.
źródło
Jeśli chcesz tylko wypisać pierwsze 5 elementów, powinieneś napisać coś takiego:
Jeśli chcesz napisać funkcję zwracającą część tablicy, powinieneś użyć array_slice:
źródło
Możesz użyć funkcji array_slice, ale czy użyjesz innych wartości? czy tylko pierwsze 5? ponieważ jeśli użyjesz tylko pierwszych 5, możesz użyć LIMITU w SQL.
źródło
Bardziej obiektowym sposobem byłoby podanie zakresu do metody # []. Na przykład:
Powiedzmy, że chcesz pierwsze 3 elementy z tablicy.
liczby = [1, 2, 3, 4, 5, 6]
liczby [0..2] # => [1,2,3]
Powiedzmy, że chcesz pierwszych x elementów z tablicy.
liczby [0..x-1]
Wspaniałą rzeczą w tej metodzie jest to, że jeśli poprosisz o więcej elementów niż ma tablica, po prostu zwróci całą tablicę.
liczby [0..100] # => [1,2,3,4,5,6]
źródło