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 :

in_array : Wrong datatype for second argument


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut in_array : Wrong datatype for second argument
    Bonjour,

    Je ne trouve pas le problème de mon script qui est pourtant ultra simple.

    j'ai le message d'erreur suivant:
    Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxxxxxxxxx on line 78
    Le code de cette fameuse ligne 78 (la première ci-dessous):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (in_array($login, $membre_existant))
     {
       echo 'Le login ' . $login . ' se trouve dans les membres existant.<br />';
       $existe=1;
     }
    else
     {
       $membre_existant[]=trim($login);
       $existe=0;
     }
    Enfin si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<pre>';
    print_r($membre_existant);
    echo '</pre>';
    J'ai :
    Array
    (
    [0] => membre1
    [1] => membre2
    [2] => membre3
    [3] => membre4
    )
    Donc c'est bien un tableau.

    Sauriez-vous me dire où est le problème ?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Salut,

    Cette partie de code est correct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (in_array($login, $membre_existant))
     {
       echo 'Le login ' . $login . ' se trouve dans les membres existant.<br />';
       $existe=1;
     }
    else
     {
       $membre_existant[]=trim($login);
       $existe=0;
     }
    Comment est défini ton tableau avant cette fameuse ligne 78???

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut
    Citation Envoyé par defcon_suny Voir le message
    Comment est défini ton tableau avant cette fameuse ligne 78???
    en début de script, il est définie comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var $membre_existant = array();
    Il est donc vide.

    en fait le code parse un flux xml, ce flux peut contenir plusieurs fois le même item (le flux ne m'appartiens pas, donc je fais avec)

    dans $membre_existant, je met uniquement le login du membre et aux items suivant je regarde si je l'ai déja.

    Donc au départ le tableau est vide et il s'alimente si le login n'est pas déja présent if (in_array($login, $membre_existant))....

  4. #4
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    L'erreur PHP t'indique que le second argument n'est pas reconnu en tant que tableau... c'est que cela doit être vrai!

    Peux tu nous donner un peu de ton code?

  5. #5
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    salut,

    que te donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($membre_existant)
    ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut
    Citation Envoyé par thes32 Voir le message
    salut,

    que te donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($membre_existant)
    ?
    array(30) { [0]=> string(9) "unepetale" [1]=> string(4) "nh60" [2]=> string(13) "solitude67100" [3]=> string(6) "valjes" [4]=> string(14) "mademoiselleee" [5]=> string(7) "Emy2610" [6]=> string(5) "CDL23" [7]=> string(13) "divinelicious" [8]=> string(8) "vicky444" [9]=> string(7) "naila92" [10]=> string(11) "corallienne" [11]=> string(6) "ruby10" [12]=> string(5) "khea_" [13]=> string(14) "griffedudiable" [14]=> string(13) "choupettedu44" [15]=> string(7) "sol2875" [16]=> string(10) "origamie31" [17]=> string(10) "steficarla" [18]=> string(7) "baotane" [19]=> string(12) "vanessaseule" [20]=> string(11) "brunette666" [21]=> string(10) "romancia29" [22]=> string(6) "nelvea" [23]=> string(12) "ptitebulle67" [24]=> string(9) "annee2009" [25]=> string(8) "thalou12" [26]=> string(10) "bifidus971" [27]=> string(7) "phany14" [28]=> string(9) "vitalarti" [29]=> string(12) "sophie-douce" }

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut
    Citation Envoyé par defcon_suny Voir le message
    L'erreur PHP t'indique que le second argument n'est pas reconnu en tant que tableau... c'est que cela doit être vrai!

    Peux tu nous donner un peu de ton code?
    Je suis bien d'accord qu'il ne doit pas me raconter de connerie.

    Le code est très long (parseur de flux XML avec sax), je vais essayer de la réduire à l'essentiel, tout en gardant le problème et vous le publier.

  8. #8
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Citation Envoyé par yann123456 Voir le message
    en début de script, il est définie comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var $membre_existant = array();
    Il est donc vide.

    en fait le code parse un flux xml, ce flux peut contenir plusieurs fois le même item (le flux ne m'appartiens pas, donc je fais avec)

    dans $membre_existant, je met uniquement le login du membre et aux items suivant je regarde si je l'ai déja.

    Donc au départ le tableau est vide et il s'alimente si le login n'est pas déja présent if (in_array($login, $membre_existant))....
    Quand tu définis ton tableau retire le var précédent $membre_existant = array();.

    Ensuite, juste avant ta condition if, insère ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (is_array($membre_existant)){
     var_dump($membre_existant);
    }else{
     echo  'ce n\'est pas un tableau';
    }
    résultat ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut
    Citation Envoyé par defcon_suny Voir le message
    Quand tu définis ton tableau retire le var précédent $membre_existant = array();.

    Ensuite, juste avant ta condition if, insère ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (is_array($membre_existant)){
     var_dump($membre_existant);
    }else{
     echo  'ce n\'est pas un tableau';
    }
    résultat ?
    Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in xxxxxxxxx/parseur.php on line 22
    La ligne 22 étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $membre_existant = array();
    Je précise que ce bout de code est dans une class (class rss), je sais pas si ça peux vous être utile.

    J'ai ensuite complètement supprimer la déclaration du tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var $membre_existant = array();
    Ce qui donne:
    ce n'est pas un tableau
    Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxxxxxxxxxxxxxx/parseur.php on line 83


    array(1) { [0]=> string(9) "unepetale" }


    array(2) { [0]=> string(9) "unepetale" [1]=> string(4) "nh60" }


    array(3) { [0]=> string(9) "unepetale" [1]=> string(4) "nh60" [2]=> string(13) "solitude67100" }


    array(4) { [0]=> string(9) "unepetale" [1]=> string(4) "nh60" [2]=> string(13) "solitude67100" [3]=> string(6) "valjes" }


    array(5) { [0]=> string(9) "unepetale" [1]=> string(4) "nh60" [2]=> string(13) "solitude67100" [3]=> string(6) "valjes" [4]=> string(14) "mademoiselleee" }


    array(6) { [0]=> string(9) "unepetale" [1]=> string(4) "nh60" [2]=> string(13) "solitude67100" [3]=> string(6) "valjes" [4]=> string(14) "mademoiselleee" [5]=> string(7) "Emy2610" }
    Ce code est dans une boucle.
    J'ai copié une partie plus longue du message retourné par php.
    Comme vous pouvez le voir mon tableau s'incrémente bien a chaque passage, le script doit ajouter le login dans $membre_existant s'il n'y est pas déjà. D'où l'utilisation du in_array.

    Le message d'erreur n'apparait qu'au premier passage dans la condition, c'est à dire quand le tableau est vide. Ensuite ça à l'air de fonctionner.

    Si je laisse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var $membre_existant = array();
    J'ai le même retour que ci-dessus.

    Un tableau vide n'est peut-être pas considérer comme un tableau, il faudrait donc ne pas passer dans la condition lors du premier item, je regarde ça tout de suite.

    J'espère avoir été compréhensible.

    Merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Par défaut
    le code ci-dessous ne retourne pas d'erreur et fonctionne.
    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
     
    $result = count($membre_existant);
    if ($result == 0)
    {
    	$membre_existant[]=trim($login);
    	$existe=0;
    }
    else
    {
    	if (in_array($login, $membre_existant))
    		{
    		echo 'La login ' . $login . ' se trouve dans les membres existant.<br />';
    		$existe=1;
    		}
    	else
    		{
    		$membre_existant[]=trim($login);
    		$existe=0;
    		}
     }
    Cela vous parait-il logique ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/01/2011, 16h06
  2. Réponses: 22
    Dernier message: 18/02/2010, 18h59
  3. [Débutant] Undefined function or method 'plotcontour' for input arguments of type
    Par marionba dans le forum MATLAB
    Réponses: 4
    Dernier message: 28/10/2009, 21h41
  4. Réponses: 15
    Dernier message: 18/02/2009, 18h53
  5. [Oracle Datatype] For a long text >4000chars
    Par lem01 dans le forum SQL
    Réponses: 3
    Dernier message: 29/01/2008, 19h56

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