2010-11-11 7 views

Répondre

9

Essayez:

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

Notez que ce réordonner les clés de tableau d'entrée de 0 à n-1.

(Edit: La valeur de retour n'est pas utilisé dans ce cas.)

+0

Ceci retourne un tableau vide – Harmen

+0

Oui, j'avais déjà corrigé ma réponse. Il retourne les éléments qui ont été extraits, ce qui n'est rien dans ce cas. Il modifie le tableau d'entrée d'origine par référence. – Matthew

+0

konforence, -1 devient +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; 
} 

utilisation:

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

Vous avez effectivement reconstruit 'array_splice()' – Harmen

+0

C'est la raison pour laquelle il y a tellement de fonctions de tableau en PHP: écrire le vôtre est normalement plus rapide que de lire les subtilités de dans ceux dans le manuel :) –

+0

wow, nous apprenons quelque chose de nouveau tous les jours. merci pour le pointeur @Harmen :) +1 – tpae

4

Peut-être que je manque la complexité de votre question, mais ce qui suit ne vous donne-t-il pas ce que vous voulez?

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

Last but not least:

  1. Append nouvelles choses à la fin du tableau
  2. Trier le tableau lorsque vous avez besoin finalement: 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; 
} 

occasion comme ceci:

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