Recoupement de tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Recoupement de tableau

par zeus » 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"

par pierrot » 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

par Invité » 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

par zeus » 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

Dernier detail

par Invité » 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

par pierrot » 24 juin 2005, 16:02

bien sûr ... 8)

par zeus » 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:

par pierrot » 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

par zeus » 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

Effectivement

par Invité » 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

par guilt92 » 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

par pierrot » 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?

Recoupement de tableau

par Invité » 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.