2010-11-11 13 views

risposta

9

Prova:

array_splice($array, 2 /*offset*/, 0 /*length*/, 3 /*value*/); 

Nota che questo riordinare le chiavi della matrice di ingresso da 0 a n-1.

(Edit: Il valore di ritorno non è usato in questo caso.)

+0

Questo restituisce un array vuoto – Harmen

+0

Sì, avevo già corretto la mia risposta. Restituisce gli elementi che sono stati estratti, il che non è nulla in questo caso. Modifica l'array di input originale per riferimento. – Matthew

+0

konforence, -1 diventa +1;) – Harmen

6
array_merge(array_slice($array,0,2),array(3),array_slice($array,2)) 
1
function array_insert($array,$pos,$val) 
{ 
    $array2 = array_splice($array,$pos); 
    $array[] = $val; 
    $array = array_merge($array,$array2); 

    return $array; 
} 

utilizzo:

array_insert($a,2,3); 
+1

In realtà ricostruisci 'array_splice()' – Harmen

+0

Ecco perché ci sono così tante funzioni di array in PHP: scrivere il tuo è normalmente più veloce che leggere le sottigliezze di built-in in quelli nel manuale :) –

+0

wow, impariamo qualcosa di nuovo ogni giorno. grazie per il puntatore @Harmen :) +1 – tpae

4

Forse mi manca la complessità della tua domanda, ma non ti dà quello che vuoi?

$array[] = 3; 
sort($array); 
2

Ultimo ma non meno importante:

  1. Aggiunge novità alla fine della matrice
  2. ordinare l'array quando finalmente ne ha bisogno: asort()
2
function insertMissingIntoArray($values = array(), $valueIncrement = 1) { 
    $lastValue = 0; 
    foreach ($values as $key=>$val) { 
     if ($key != 0) { 
      if ($val != $lastValue + $valueIncrement) { 
       array_splice($values, $key, 0, $val); 
      } 
      $lastValue = $val; 
     } 
    } 
    return $values; 
} 

Usato così:

$values = array(1,2,4,5,7,9); 
$fixedValues = insertMissingIntoArray($values, 1); 
// $fixedValues now is (1,2,3,4,5,6,7,8,9) 
Problemi correlati