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

cs_SuperChouquette 37 Messages postés dimanche 24 février 2008Date d'inscription 18 mai 2010 Dernière intervention - 17 mars 2008 à 18:42 - 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

Répondre au sujet
kohntark 3708 Messages postés lundi 5 juillet 2004Date d'inscription 27 avril 2012 Dernière intervention - 21 juil. 2009 à 19:39
+5
Utile
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 -
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de kohntark
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 18 mars 2008 à 08:51
+3
Utile
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
5w17ch 1 Messages postés mercredi 16 janvier 2008Date d'inscription 21 juillet 2009 Dernière intervention - 21 juil. 2009 à 13:16
+1
Utile
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
Utile
Bonjour, il faut faire
sort($array)
Cordialement
Commenter la réponse de Toto

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.