Tableau PHP

Fermé
bloodchecker Messages postés 339 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 février 2012 - 3 juin 2010 à 09:40
bloodchecker Messages postés 339 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 février 2012 - 4 juin 2010 à 15:12
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

Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
3 juin 2010 à 09:55
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
louloute300 Messages postés 335 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 28 novembre 2012 29
3 juin 2010 à 21:46
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
bloodchecker Messages postés 339 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 29 février 2012 35
4 juin 2010 à 15:12
Merci :)
0