Come si fa a troncare un array PHP in modo più efficace?PHP come troncare un array
Dovrei usare array_splice?
Come si fa a troncare un array PHP in modo più efficace?PHP come troncare un array
Dovrei usare array_splice?
È possibile utilizzare le funzioni native per rimuovere elementi di un array:
Con questa conoscenza rendere la propria funzione
function array_truncate(array $array, $left, $right) {
$array = array_slice($array, $left, count($array) - $left);
$array = array_slice($array, 0, count($array) - $right);
return $array;
}
Peter puoi spiegare quali sono i parametri '$ left' e' $ right' per –
@RahilWazir troncare x '$ left' elementi da sinistra, troncare x' $ right' parametri da destra – Peter
Sì, a meno che non si desidera un loop all'interno di array e unset() gli elementi indesiderati.
... e aggiornare le chiavi dell'array se fossero numerici – FMaz008
Nota, in un foreach dovresti usare il riferimento completo dell'indice dell'array dato che foreach usa una copia dell'array. 'Foreach ($ array da $ key => $ value) {unset ($ array [$ key]}' non 'foreach ($ array da $ key => $ value) {unset ($ value)}'. Il secondo –
È possibile utilizzare una di queste funzioni:
function array_truncate(&$arr)
{
while(count($arr) > 0) array_pop($arr);
}
// OR (faster)
function array_truncate2(&$arr)
{
array_splice($arr, 0, count($arr));
}
Usage:
$data2 = array("John" => "Doe", "Alice" => "Bob");
array_truncate($data2);
// OR
array_truncate2($data2);
Il 'while'- loop sarebbe probabilmente il modo più inefficiente per troncare un array :-) –
@AlexanderFarber ovviamente lo è, è per questo che ho detto (nel commento) che l'altro è più veloce. Ho incluso il metodo array_pop per mostrare un metodo in cui hai la possibilità di fare qualcosa sull'elemento prima di scartarlo. –
Questo functi su dovrebbe funzionare
function truncateArray($truncateAt, $arr) {
array_splice($arr, $truncateAt, (count($arr) - $truncateAt));
return $arr;
}
Cosa vuoi ottenere? Fornire qualche esempio. – hsz
Perché l'avversione a 'array_splice'? – Clive
Ho letto un risultato di join SQL e ho bisogno di reimpostare un array associativo ogni 3 iterazione. Ho pensato che il conteggio potesse essere usato qui, come in alcune lingue in cui hai impostato la lunghezza dell'array su 0 ... –