Bonjour
J'ai un tableau multidimensionnel comprenant plusieurs lignes.
Je voudrai supprimer une ligne en particulier du tableau. Quel fonction faut il utiliser pour le faire?
Merci d'avance
Bonjour
J'ai un tableau multidimensionnel comprenant plusieurs lignes.
Je voudrai supprimer une ligne en particulier du tableau. Quel fonction faut il utiliser pour le faire?
Merci d'avance
Je suppose que si tu poses la question c'est que tu ne veux pas supprimer un element a partir de sa clef.
Quel est le critere de suppression ?
ben
J'ai tenté de faire cela avec unset();
exemple je veux detruire la ligne 5 sur 10 lignes
Cela me détruit la ligne mais quand je fais un sizeof(), au lieu d'avoir 9 pour 9 ligne j'ai 10
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $i=5; unset($tab[$i]);
je viens de tester et "unset" fonction très bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $tableau = array( 3 => 33, 'aa' => 'oo', 5 => TRUE, ); echo sizeof($tableau) . "\n"; // affiche "3" unset($tableau[5]); echo sizeof($tableau) . "\n"; // affiche "2"
Tu peux faire un print_r() de ton tableau pour controler ce qu'il contient.
Sinon l'authentique fonction php c'est count(), sizeof() n'est qu'un alias de basse extraction.
Départ
nbr de ligne 10
Maintenant c'est l'inverse quand je compte le nombre de ligne avec sizeof() ou count(), je vois que le nombre descend donc j'en déduisait que le ou les lignes sont supprimer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $tab=$_SESSION['a']; $sel=$_POST['sel'];//---> numéro de ligne à supprimer foreach($sel as $val){ unset($tab[$val]); } $cal=sizeof($tab); //---->affiche 9 très bien
Et ben non même s'il compte 9. La ligne n'est pas supprimer
lorsque je remet 9 dans
cela m'affiche le même nombre de lignes (10 lignes) alors que count() ou sizeof() me disent qu'il y en a 9
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $nbr=10;//--------10 ou 9 for($i=0;$i<=$nbr;$i++){ echo"".$tab[$i][0].",".$tab[$i][1].",".$tab[$i][2].""; }
Qu'est ce que j'ai supprimer? La clé ?
Qu'est qu'il faut ajouter pour effacer la ligne et que cela revienne juste.
Si tu vas de $i = 0 à $i = 9 ca fait 10 lignes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part array_splice($input,$position,1)
Je n'arrive pas à détruire définitivement la ligne voulu dans un tableau.
formulaire.php
traitement.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <?php $a=$_SESSION['a']; //---------- formulaire ----- function aff($a){$b=sizeof($a);///-------> 4 Lignes?> <form method="post" action="traitement.php"> <table><?php for($i=0;$i<=$b;$i++){ echo'<tr> <td><input type="checkbox" name="sup[]" value="'.$a[$i][0].'"><td> <td>'.$a[$i][1].'<td> <td>'.$a[$i][2].'<td> <tr>'; }?> <table> <?php } //-----affichage aff($a); // ligne [0] : 1 : Nom a : Prenom a ; // ligne [1] : 2 : Nom b : Prenom b ; // ligne [2] : 3 : Nom c : Prenom c ; // ligne [3] : 4 : Nom d : Prenom d ; //-------------- //---------- formulaire------------------ ?>
Le sizeof() reussit à supprimer la clé je pense. Car quand je refais un sizeof(), je n'ai plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php //---------- Traitement------------------ $a=$_SESSION['a']; $b=sizeof($a); $c=$_POST['sup']; foreach($c as $val){unset($a[$val]);//---- 3 lignes array_splice($a, $val);//doit détruire la ligne demandée } $_SESSION['a']=$a; header('location:index.php'); //---------- traitement------------------ ?>
que 3 lignes au lieu de 4. Par contre je n'arrive pas à supprimer définitivement la ligne du
tableau. En effet même si le sizeof() me dit qu il y a 3 lignes. Lorsque je fais un affichage
il m'en affiche 4 lignes. Comme si j'avais rien fait.
Que faut-il faire pour la ligne voulu soit détruite ?
En trifouillant le code j 'ai reussi à trouver la solution.
Voici la solution pour une ligne
voici la solution pour plusieurs lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 //---------- Traitement------------------ $val=$_SESSION['a']; $vol=$_POST['sup']; $cal=sizeof($val); $v==""; $nbr=$val-sizeof($vol); for($i=0;$i<=$_SESSION['b'][9];$i++){ if($v==$val[$i][0]){ unset($val[$vol]); array_splice($val, $vol, 1); } } $_SESSION['b'][9]=$nbr; $_SESSION['a']=$val; header('location:index.php'); //---------- traitement------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 $val=$_SESSION['a']; $vol=$b[9]; $vol=$_POST['sup']; $cal=sizeof($val); $v==""; $nbr=$val-sizeof($vol); foreach($vol as $vil){ unset($val[$vol]); array_splice($val, $vol, 1); } } $_SESSION['b'][9]=$nbr; $_SESSION['a']=$val; header('location:index.php');
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager