2009-10-15 15 views

risposta

217

array_slice restituisce una fetta di un array

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

è il codice che si desidera nel tuo caso per restituire i primi cinque elementi

+0

ma questo non funzionerà con gli array associativi. le chiavi si perdono. – ESCOBAR

+3

@ESCOBAR: gli array associativi non hanno necessariamente un ordine, ma mappano solo le chiavi ai valori; quindi "valori da 3 a 7" non ha davvero senso comunque ... – knittl

+0

giusto, ma in questo caso non è correlato all'ordine. sono solo i primi 5 elementi. e non puoi usare array_slice qui. – ESCOBAR

6

array_splice - Rimuove una porzione dell'array e sostituirlo con qualcos'altro:

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

Da manuale di PHP:

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

Se lunghezza viene omesso, rimuove tutto, dalla compensazione fino alla fine dell'array. Se la lunghezza è specificata ed è positiva, allora molti elementi verranno rimossi. Se la lunghezza è specificata ed è negativa, la fine della porzione rimossa sarà quella di molti elementi dalla fine dell'array. Suggerimento: per rimuovere tutto dall'offset alla fine dell'array quando viene specificata anche la sostituzione, utilizzare count ($ input) per la lunghezza.

+0

la sintassi per restituire i primi 5 elementi è array_splice ($ input, 5) – aland

+0

Grazie, risolto ora. –

+0

@AndrejsCainikovs Come per php.net, "Se la lunghezza è omessa, la sequenza avrà tutto da offset fino alla fine dell'array." Il testo in grassetto della risposta indica esattamente l'opposto. – Kalko

1

Se si desidera solo per emettere i primi 5 elementi, si dovrebbe scrivere qualcosa di simile:

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

    } 

    } 

?> 

Se si vuole scrivere una funzione che restituisce parte della matrice, è necessario utilizzare array_slice:

<?php 

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

?> 
0

È possibile utilizzare la funzione array_slice, ma si useranno altri valori? o solo i primi 5? perché se userai solo i primi 5 puoi usare LIMIT in SQL.

-3

Un modo più orientato agli oggetti sarebbe quello di fornire un intervallo al metodo # []. Ad esempio:

Dire di volere i primi 3 elementi da un array.

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

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

dici che vuoi il primo x elementi da un array.

numeri [0..x-1]

La cosa bella di questo metodo è se chiedete più oggetti di quelli l'array ha, restituisce semplicemente l'intero array.

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

+3

Ma php non supporta gli intervalli. Sei sicuro di non parlare di rubino o qualcosa del genere? –

+1

"Un modo più orientato agli oggetti"? Questa risposta non ha nulla a che fare con la programmazione orientata agli oggetti. – Ducky

Problemi correlati