2009-10-15 14 views

Odpowiedz

217

array_slice zwraca kawałek tablicy

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

jest kod, który ma w Twoim przypadku, aby powrócić pierwszych pięciu elementów

+0

, ale to nie zadziała z tablicami asocjacyjnymi. klucze się gubią. – ESCOBAR

+3

@ESCOBAR: tablice asocjacyjne niekoniecznie mają porządek, tylko odwzorowują klucze do wartości; więc "wartości od 3 do 7" tak naprawdę nie mają sensu i tak ... – knittl

+0

prawda, ale w tym przypadku nie ma to związku z zamówieniem. to tylko około pierwszych 5 pozycji. i nie można tutaj użyć array_slice. – ESCOBAR

6

array_splice - Usuń część tablicy i zastąpić go czymś innym:

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

Z podręcznika PHP:

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

Jeśli długość jest pominięta, usuwa wszystko od przesunięcie 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, to koniec usuniętej części będzie tą liczbą elementów z końca tablicy. Wskazówka: aby usunąć wszystko, od przesunięcia do końca tablicy, gdy jest również określona zamiana, użyj count ($ input) dla długości.

+0

Składnia zwracania pierwszych 5 elementów to array_splice ($ input, 5) – aland

+0

Dzięki, poprawiono teraz. –

+0

@AndrejsCainikovs Zgodnie z php.net, "Jeśli długość zostanie pominięta, sekwencja będzie zawierała wszystko od przesunięcia aż do końca tablicy." Pogrubiony tekst odpowiedzi brzmi dokładnie odwrotnie. – Kalko

1

Jeśli chcesz tylko do wyjścia pierwszych 5 elementów, należy napisać coś takiego:

<?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; 

    } 

    } 

?> 

Jeśli chcesz napisać funkcję, która zwraca część tablicy, należy użyć array_slice:

<?php 

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

?> 
0

Możesz użyć funkcji array_slice, ale czy użyjesz innych wartości? lub tylko pierwsze 5? ponieważ jeśli użyjesz tylko pierwszych 5, możesz użyć LIMIT na SQL.

-3

Bardziej zorientowanym obiektowo byłoby podanie zakresu dla metody # []. Na przykład:

Powiedzmy, że chcesz pierwsze 3 elementy z tablicy.

numbers = [1,2,3,4,5,6]

numery [0..2] # => [1,2,3]

że chcesz pierwszy X elementy z tablicy.

numery [0..x-1]

Wielką zaletą tej metody jest to, jeśli poprosić o więcej przedmiotów niż tablica ma, to po prostu zwraca całą tablicę.

numery [0..100] # => [1,2,3,4,5,6]

+3

Ale php nie obsługuje zakresów. Jesteś pewien, że nie mówisz o rubinach lub czymś w tym stylu? –

+1

"Bardziej zorientowany obiektowo"? Ta odpowiedź nie ma nic wspólnego z programowaniem obiektowym. – Ducky

Powiązane problemy