Recoupement de tableau

Invité
Invité n'ayant pas de compte PHPfrance

24 juin 2005, 15:20

Bonjour,

Je voudrais tout d abord créer un tableau contenant les chiffres de 1 à 52.
Par la suite, je récupère via une base de donnée des entiers un par un et en réalité je voudrai que chaque entier que je trouve soit supprimé du tableau crée au fur et à mesure.

La récupération dans la base ne pose aucun problème en revanche je ne sais ni implémenter si supprimer des éléments dans un tableau c'est pourquoi je sollicite votre aide.

Exemple pour faciliter la compréhension :
Mon tableau comporte les chiffres : 1,2,3,4,5,6
Dans ma base de donnée je "rapporte" : 2,3,5
Je voudrais que mon tableau final soit 1,4,6

Merci d avance à tous.

Eléphant du PHP | 223 Messages

24 juin 2005, 15:24

et je suppose que ton nouveau tableau, tu le veux réindexé...
c'est à dire
newtab[0]=1
newtab[1]=4
newtab[2]=6

c ca?

Mammouth du PHP | 1353 Messages

24 juin 2005, 15:26

http://www.laltruiste.com/document.php? ... bleau.html

En fait il s'agirait de faire un array_intersect mais en faisant l'inverse : au lieu d avoir un tableau ou les 2 tableaux se recoupent il faut faire le contraire...

Je ne sais pas si une fonction toute faite existe

Invité
Invité n'ayant pas de compte PHPfrance

24 juin 2005, 15:28

En fait le but final est de faire une liste de selection contenant 1 4 et 6 dans l exemple donc soit je réindexe le nouveau tableau soit je la crée directement je ne sais pas

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 juin 2005, 15:30

//$a_tableau est ton tableau
//$a_bd est le tableau issu de la BD

//On parcour le tableau
foreach($a_tableau as $index => $val) {
  //Si cette valeur est dans la bdd
  if (in_array($va, $a_bdl))
    //on supprime cette valeur du tableau
    unset($a_tableau[$index]);
}
devrait pouvoir faire ce que tu veux
Modifié en dernier par zeus le 24 juin 2005, 16:03, modifié 1 fois.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 223 Messages

24 juin 2005, 15:57

lol, j'viens de faire un script à ma sauce !!! ca marche, mais qd je vois ta soluce zeus, j'suis mort de rire en me disant que ma solution est vraiment pas optimum !!!! mais bon, ca m'aura fait reflechir un peu, c bien...voilà ma solution...et je vous en prie, ne vous moquez pas :D
<?

$tableau_original=array('zero','un','deux','trois','quatre','cinq','six');
$tableau_a_virer=array('un','quatre','six');
$taille=count($tableau_a_virer);
$separator='separator';

echo "<br>voici le tableau initial : <br>";
echo'<pre>';
print_r ($tableau_original);
echo '</pre>';

echo "<br>voici les element a virer : <br>";
echo'<pre>';
print_r ($tableau_a_virer);
echo '</pre>';

for ($i=0; $i<$taille-1;$i++){
$tableau_a_virer[$i]=$tableau_a_virer[$i] . $separator;}


$tableau_remplacer_par=array('','','');

$chaine_implode=implode('separator',$tableau_original);
//echo $tableau_original_implode;

$chaine_implode_modifiee=str_replace($tableau_a_virer,$tableau_remplacer_par,$chaine_implode);
//echo $chaine_implode_modifiee;

$tableau_final=explode($separator,$chaine_implode_modifiee);
$taille2=count($tableau_final);

for ($i=0; $i<$taille2-1; $i++){
$tableau_final_2[$i]=$tableau_final[$i];}

echo "<br>voila le resultat final : <br>";
echo '<pre>';
print_r ($tableau_final_2);
echo '</pre>';

?>

C long hein??? :D Ben oui, mais ca marche alors...chuuuutt :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 juin 2005, 15:59

Attention parce que j'ai pas testé la mienne ...

donc peut être qu'il vaut mieux une longue qui fonctionne plutôt qu'une petite en panne (sans arrière pensée bien sûr ) :roll:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 223 Messages

24 juin 2005, 16:02

bien sûr ... 8)

Invité
Invité n'ayant pas de compte PHPfrance

24 juin 2005, 16:02

Désolé Pierrot mais j ai d abord lu la solution de Zeus donc je suis parti la dessus, c est presque parfait sauf le unset qui en fait en plus de me supprimer la valeur supprime aussi l index... Si il existe une fonction qui supprime la valeur et décale le reste alors cette solution est parfaite...

Juste attention si vous voulez utiliser ce code il faut inverser les parametres dans la fonction in_array, mais a part ca c est niquel...

Merci quand meme Pierrot :wink: si je trouve pas la fonction j essayerai ta méthode

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 juin 2005, 16:04

Je viens d'éditer pour que ceux qui ne lirait pas jusqu'ici

Mais est-ce que tu as absolument besoin de l'index ?

Si c'est juste une question de parcours, utilise foreach et tu n'as pas besoin d'index qui se suivent
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

24 juin 2005, 16:07

Je n ai pas encore codé la suite c etait pour tester en faisant un affichage que je me suis apercu que l index etait "troué".

Cela étant il suffit de faire $tab= array_values($tab); pour réindexer un tableau je viens de découvrir cela et ca marche niquel.

Voila problème résolu merci à tous

Eléphant du PHP | 223 Messages

24 juin 2005, 16:07

bon meme si tu prends celle de zeus, tu pourras qd meme la tester??? ou me dire que tu l'as fait meme si c'est pas vrai :D histoire que je me dise que j'ai pas fait ca pour rien ...lol
J'entends déjà zeus qui va dire " de toute façon tu n'as pas fait ca pour rien, ca te fais progresser, ya que comme ca qu'on avance !!!" me trompe-je??? :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 juin 2005, 16:14

Suis-je si prévisible ?? :shock:

Mais sans rire, c'est comme ça que j'ai appris le PHP : en essayant, ratant et réessayant

Mon chef me répete souvent :
"Faire et défaire, c'est aussi travailler"
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer