Supprimer element d'un array et mettre à jour la clef [Résolu]

Messages postés
37
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
18 mai 2010
- - Dernière réponse :  Toto - 22 mars 2014 à 11:07
Bonjour,
je souhaiterais supprimer element d'un array et décaler les clefs de cette array, voici mon code et mon probleme :
<?php
$array = array('element 0', 'element 1', 'element 2', 'element 3', 'element 4', 'element 5'); // mon tableau

// la fonction n'est pas bonne, c'est ce que je cherche
// il faudrait supprimer l'element positionner en 2 dans l'array ( l'element 2 )
// et que toutes les clefs décalent
// ( que l'element 3 est ensuite pour clef la valeur 2, l'element 4 la clef de valeur 3, ...)
unset($array[2]);

// On créé une boucle pour les résultats le probleme est que si on enleve l'element 2 l'element 5 n'apparait plus ...
for ($numero = 0; $numero < count($array); $numero++)
{
    echo "".$array[$numero]."

";

}
?>

Merci !
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
5
Merci
Salut,

J'y vais de mon grain de sel, sans doute plus simple et plus rapide (sur les "gros" tableaux) :

unset($array[2]);
$array = array_merge($array);


Le fait de ne passer qu'un seul tableau à array_merge réindexe le tableau.


Cordialement,


Kohntark -

Dire « Merci » 5

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 126 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kohntark
Messages postés
10918
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17
3
Merci
Hello,

il faut le faire toi-même :
unset($array[2]);
$iCpt = 0;
foreach($array as $mValeur) {
    $array[$iCpt] = $mValeur;
    $iCpt++;
}
print_r($array);
Commenter la réponse de malalam
Messages postés
1
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
21 juillet 2009
1
1
Merci
J'ai eu quelque peine avec ces fameux tableau + suppression d'enregistrement.
petite explication de ma solution: on liste les éléments à partir de la case supprimée, on tire à chaque case l'enregistrement de la case "au dessus". J'espère que ça peut aider.

Je propose ma solution, pour plusieurs tableaux:

//mon_index=l'index à supprimer
$cpt=$mon_index;

while($cpt<sizeof($_SESSION['convention_achat_item'])){
$_SESSION['convention_achat_item'][$cpt]=$_SESSION['convention_achat_item'][$cpt+1];
$_SESSION['convention_achat_qty'][$cpt]=$_SESSION['convention_achat_qty'][$cpt+1];
$_SESSION['convention_achat_price'][$cpt]=$_SESSION['convention_achat_price'][$cpt+1];
$cpt++;
}
$cpt--;
unset($_SESSION['convention_achat_item'][$cpt]);
unset($_SESSION['convention_achat_qty'][$cpt]);
unset($_SESSION['convention_achat_price'][$cpt]);
Commenter la réponse de 5w17ch
1
Merci
Bonjour, il faut faire
sort($array)
Cordialement
Commenter la réponse de Toto