IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] array_push ou problème d'algo ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 47
    Points
    47
    Par défaut [Tableaux] array_push ou problème d'algo ?
    Bonjour à tou(te)s,

    j'ai un petit probleme avec cette fonction :

    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
    25
     
    function quadri()
    {
     
    	for($i=0;$i<70;$i++)
    	{
    		$stf = 0;$sf=0;$sm=0;$sfort = 0;
    		echo("<br /> quadri : \$_SESSION[\"lesCanaux\"][$i]->maxi : ".$_SESSION["lesCanaux"][$i]->maxi);
    		if(isset($_SESSION["lesCanaux"][$i]->maxi))
    		{$valeur = $_SESSION["lesCanaux"][$i]->maxi;}else{$valeur = 666;}
    		if(($_SESSION["lesCanaux"][$i]->maxi >=$_SESSION["seuilPrecoef"])&&($_SESSION["lesCanaux"][$i]->maxi <$_SESSION["RisqueFaible"]))
    		{array_push($_SESSION['spectretfaible'],$valeur);
    		array_push($_SESSION['spectrefaible'],"0");array_push($_SESSION['spectremoyen'],"0");array_push($_SESSION['spectrefort'],"0");echo("<br /> le canal $i a un risque tres faible : ".$_SESSION['spectretfaible'][count($_SESSION['spectretfaible'])-1]);}
     
    		elseif(($_SESSION["lesCanaux"][$i]->maxi >$_SESSION["RisqueFaible"])&&($_SESSION["lesCanaux"][$i]->maxi <= $_SESSION["RisqueMoyen"]))
    		{array_push($_SESSION['spectretfaible'],"0");array_push($_SESSION['spectrefaible'],$valeur);array_push($_SESSION['spectremoyen'],"0");array_push($_SESSION['spectrefort'],"0");echo("<br /> le canal $i a un risque faible : ".$_SESSION['spectrefaible'][count($_SESSION['spectrefaible'])-1]);}
     
    		elseif(($_SESSION["lesCanaux"][$i]->maxi >$_SESSION["RisqueMoyen"])&&($_SESSION["lesCanaux"][$i]->maxi <= $_SESSION["RisqueFort"]))
    		{array_push($_SESSION['spectretfaible'],"0");array_push($_SESSION['spectrefaible'],"0");array_push($_SESSION['spectremoyen'],$valeur);array_push($_SESSION['spectrefort'],"0");echo("<br /> le canal $i a un risque moyen : ".$_SESSION['spectremoyen'][count($_SESSION['spectremoyen'])-1]);}
     
    		elseif(($_SESSION["lesCanaux"][$i]->maxi >$_SESSION["RisqueFort"]))
    		{array_push($_SESSION['spectretfaible'],"0");array_push($_SESSION['spectrefaible'],"0");array_push($_SESSION['spectremoyen'],"0");array_push($_SESSION['spectrefort'],$valeur);echo("<br /> le canal $i a un risque fort : ".$_SESSION['spectrefort'][count($_SESSION['spectrefort']-1)-1]);}
    		else{echo("<br />probleme quadri $i");}	
    	}
    }
    bien sur, tous les $_SESSION[quelquechose] ont été déclarés en array, j'ai testé avec un $_SESSION["lesCanaux"][$i] non vide que la fonction est censée trier, j'ai aucun message d'erreur et les 4 tableaux censés résulter de ce tri sont vides aulieu d'etre remplis. Est ce que j'utilise mal array_push ?
    Merci de votre aide.

  2. #2
    Membre éprouvé Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Points : 1 042
    Points
    1 042
    Par défaut
    bonjour,

    Bon je fais juste un passage éclair, mais je ne pige pas trop ce que tu compte faire avec le array_push.

    Cette fonction a le même effet que:

    Donc quand tu utilise cette fonction, il faut rentrer les donnés dans un tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_push($tableau, $var);
    Et tout ce qu'il y aura dans $var rentrera dans le tableau $tableau.

    Je ne suis pas sûr que ta synthaxe soit correct...
    LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je demande pas si le principe de faire un array_push() dans un tableau dans une variable de session marche ou pas, je parle en particulier de ta fonction la.
    en l'ocurrence, tu fais un if pour savoir si la valeur est bien affectée isset($_SESSION["lesCanaux"][$i]->maxi) mais dans les deux cas (affectée ou non) tu fais des comparaisons apres sur cette valeur.

    Commences donc, si tu ne veux pas remplacer l'utilisation de $_SESSION[] par autre chose, par faire des echo dans chaque if pour vérifier que tu rentres bien dans les conditions souhaitées. De meme, fait un print_r($_SESSION); au début pour vérifier que ton tableau est bien rempli.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    merci je teste ça ^^

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    Bon, c'est cool, rien qu'avec des tableaux ça marche, maintenant faut que je trouve comment recopier les tableaux que j'obtiens dans les tableaux de session :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    function quadri()
    {
        $sfaible = array();
    	$sfort=array();
    	$stresfaible=array();
    	$smoyen = array();
    	echo("<br /> PRINTR<br />");
    	print_r($_SESSION);
    	echo("<br /> PRINTR<br />");
    	for($i=0;$i<70;$i++)
    	{
     
    		echo("<br /> quadri : \$_SESSION[\"lesCanaux\"][$i]->maxi : ".$_SESSION["lesCanaux"][$i]->maxi);
    		if(isset($_SESSION["lesCanaux"][$i]->maxi))
    		{$valeur = $_SESSION["lesCanaux"][$i]->maxi;}else{$valeur = "erreur_valeur";}
    		if(($_SESSION["lesCanaux"][$i]->maxi >=$_SESSION["seuilPrecoef"])&&($_SESSION["lesCanaux"][$i]->maxi <$_SESSION["RisqueFaible"]))
    		{array_push($stresfaible,$valeur);
    		array_push($sfaible,"0");array_push($smoyen,"0");array_push($sfort,"0");echo("<br /> le canal $i a un risque tres faible : ".$stresfaible[count($stresfaible)-1]);}
     
    		elseif(($_SESSION["lesCanaux"][$i]->maxi >$_SESSION["RisqueFaible"])&&($_SESSION["lesCanaux"][$i]->maxi <= $_SESSION["RisqueMoyen"]))
    		{array_push($stresfaible,"0");array_push($sfaible,$valeur);array_push($smoyen,"0");array_push($sfort,"0");echo("<br /> le canal $i a un risque faible : ".$sfaible[count($sfaible)-1]);}
     
    		elseif(($_SESSION["lesCanaux"][$i]->maxi >$_SESSION["RisqueMoyen"])&&($_SESSION["lesCanaux"][$i]->maxi <= $_SESSION["RisqueFort"]))
    		{array_push($stresfaible,"0");array_push($sfaible,"0");array_push($smoyen,$valeur);array_push($sfort,"0");echo("<br /> le canal $i a un risque moyen : ".$_SESSION['spectremoyen'][count($smoyen)-1]);}
     
    		elseif(($_SESSION["lesCanaux"][$i]->maxi >$_SESSION["RisqueFort"]))
    		{array_push($stresfaible,"0");array_push($sfaible,"0");array_push($smoyen,"0");array_push($sfort,$valeur);echo("<br /> le canal $i a un risque fort : ".$sfort[count($sfort)-1]);}
    		else{echo("<br />probleme quadri $i");}	
    	}
     
    	echo("<br /> tres faible :");
    	for($i=0;$i<count($stresfaible);$i++)
    	{
    		echo("<br /> ".$stresfaible[$i]);
    	}
     
    	echo("<br /> faible :");
    	for($i=0;$i<count($sfaible);$i++)
    	{
    		echo("<br /> ".$sfaible[$i]);
    	}
    	echo("<br /> moyen :");
    	for($i=0;$i<count($smoyen);$i++)
    	{
    		echo("<br /> ".$smoyen[$i]);
    	}
    	echo("<br /> fort :");
    	for($i=0;$i<count($sfort);$i++)
    	{
    		echo("<br /> ".$sfort[$i]);
    	}
    }
    ça, ça marche, mes 4 array sont bien remplis mais je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $_SESSION['blabla'] = array();
    $_SESSION['blabla'] = $sfort;
    mon $_SESSION['blabla'] reste vide. Quelqu'un peut il m'indiquer où je faute ?

    encore merci à tou(te)s ^^

  6. #6
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for($i=0;$i<count($sfort);$i++)
    {
    $_SESSION['blabla'][$i]	= $sfort[$i];
    }
    Et comme ça ?
    Smiley de Plomb 2009
    Anciennement FrancoisIT

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 47
    Points
    47
    Par défaut
    évidemment ^^ je voulais éviter d'en arriver là. merci

  8. #8
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Première étape quand on veut déboguer un programme : avoir un code source lisible. J'ai rarement vu aussi illisible que ton code.
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

Discussions similaires

  1. Problème passage algo en VB
    Par franck1001 dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 05/12/2007, 09h14
  2. [Tableaux] array_push() erreur sur serveur
    Par Givemefive dans le forum Langage
    Réponses: 3
    Dernier message: 15/01/2007, 16h26
  3. Petit problème d'algo
    Par RodEpsi dans le forum Delphi
    Réponses: 5
    Dernier message: 01/08/2006, 15h30
  4. [Tableaux] Espace membre - Problème de permissions
    Par yongblood dans le forum Langage
    Réponses: 6
    Dernier message: 22/06/2006, 18h32
  5. un petit problème d'algo
    Par supertramp dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 12/10/2004, 20h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo