Tableau PHP

bloodchecker Messages postés 361 Statut Membre -  
bloodchecker Messages postés 361 Statut Membre -
Bonjour,

soit le cas suivante :

$tableau=array(pomme, poire, banane);

Ce qui au final me donne :

$tableau[0]=pomme;
$tableau[1]=poire;
$tableau[2]=banane;

J'aimerai savoir si il ets possible d'ajouter une nouvelle valeur entre deux autres

afin d'avoir par exemple :

$tableau[0]=pomme;
$tableau[1]=raisin;
$tableau[2]=poire;
$tableau[3]=banane;

Le but final est de l'utilisé dans d'immense tableau donc me dites pas de retaper ma déclaration initiale :/

en gros y a t'il moyen de décaler tous les indice pour en insérer un nouveau.

Merci !

3 réponses

  1. Gremy87 Messages postés 360 Statut Membre 38
     
    bonjour,

    je crois bien que le seul moyen de faire ca est un algorithme copiant chaque valeur supérieur a celle que tu veux sur le rang au dessus et d insérer ensuite.

    (c est simple mais dur a expliquer^^)

    au début:
    [0]=>item0
    [1]=>item1
    [2]=>item2
    [3]=>item3

    en cours:
    [0]=>item0
    [1]=>item1
    [2]=>item2
    [3]=>item2
    [4]=>item3

    après:
    [0]=>item0
    [1]=>item1
    [2]=>item4
    [3]=>item2
    [4]=>item3

    il faut partir de la fin pour le déplacement afin de ne pas écraser de valeur.

    mais cela a un gros défaut, sur des gros tableau ca prend un maximum de ressources...

    copier 20 000 valeurs a chaque fois, les machines aiment pas...
    0
  2. louloute300 Messages postés 347 Statut Membre 29
     
    bon pas trop dure: voila ce que je te propose:

    function decaledonnee($tab,$donneesupp,$num){
    $j=0;
    for($i=0;$i<count($tab);$i++){
    if ($i<>$num){$tabs[$j++]=$tab[$i];}else{$tabs[$j++]=$donneesupp;}
    }
    return $tabs;
    }

    Alors petite explication:
    $tab => ton tableau de base
    $donneesupp => La donné à rajouté
    $num => L'index (ou la ligne - 1) du tableau

    Ta plus qu'a coller ca ou tu veux ds ton prog, et écrire decaledonnee($tableau,"patate",2);

    et c'est réglé...
    0
  3. bloodchecker Messages postés 361 Statut Membre 35
     
    Merci :)
    0