begin process at 2012 05 31 01:20:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

problème avec in_array( )


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème avec in_array( )

jeudi 1 juin 2006 à 16:18:52 | problème avec in_array( )

Evangun

Bonjour à tous,
je n'arrive pas à comprendre ceci :

if(in_array('invalide', array($var1, $var2, ........, $var30))){
    echo 'pas bon';
}

cette fonction me renvoie parfois 'pas bon' alors qu'aucune variable du tableau ne vaut 'invalide' !!
En mode strict là par contre ça passe, mais je ne comprends pas pourquoi :

if(in_array('invalide', array($var1, $var2, ........, $var30), true)){
    echo 'pas bon';
}

sauriez-vous pourquoi ? merci d'avance !!
jeudi 1 juin 2006 à 17:49:35 | Re : problème avec in_array( )

malalam

Administrateur CodeS-SourceS
Hello,

il nous faudrait un exemple concret, je veux dire, avec les valeurs du tableau, et le vrai 'invalide'.
Visiblement, une des valeurs, en comparaison non typée, vaut ton 'invalide'...
jeudi 1 juin 2006 à 19:20:43 | Re : problème avec in_array( )

Evangun

Bonsoir,
le tableau contient les valeurs ci-dessous (toutes récupérées de input type="text" ou de select), donc aucune ne vaut 'invalide'. A moins que 'invalide' (c'est vraiment le mot que je recherche dans ce tableau) ait le même comportement que FALSE, je ne comprends pas. En tt cas je te remercie de te pencher sur mon problème

2006/06/01
Chambre
oui
neuf
15
0
non
oui
26
rue
-
Olivaux
Nantes
44000
5 à 10mn
bus 25
320
non
68
Fougere
Anne-Marie
amarie@laposte.net
[une valeur vide]
0612456789
jeudi 1 juin 2006 à 20:12:51 | Re : problème avec in_array( )

malalam

Administrateur CodeS-SourceS
je teste demain sur mon système...parce que là, je ne comprends pas non plus. Et comme t'es pas un débutant, j'ai pas dans l'idée que t'as fait une erreur bête en amont.
jeudi 1 juin 2006 à 20:25:45 | Re : problème avec in_array( )

FhX

Réponse acceptée !
Normal, tu fais de la comparaison entre type String et Integer. Ce qui donne au final de toute facon : 'Invalide' == TRUE. Alors que 'Invalide' !== TRUE. Il faut absolument utiliser le mode STRICT dans ce genre de cas. Le pire se situe quand : $array = (0 => 1, 1 => 3, array('x' => 'z', 'y' => 'fds')); Si le mode strict n'est pas mis, alors c'est le bordel assuré. Voila, utilise le mode strict au maximum pour éviter les emmerdes. Ca va t'obliger à typer toutes tes entrées de tableaux, mais vaut mieux ca et être sur que ca marche plutôt que d'utiliser le mode laxiste de PHP :) Voila voila :)
vendredi 2 juin 2006 à 07:17:49 | Re : problème avec in_array( )

malalam

Administrateur CodeS-SourceS
Ouais, mais y a pas de valeur à true, dans son tableau ?
vendredi 2 juin 2006 à 12:22:24 | Re : problème avec in_array( )

Evangun

Merci FhX, c'est vrai que je devrais être prudent par défaut, mais là je ne peux pas m'empêcher de vouloir comprendre : ça devrait marcher !
je vais modifier les valeurs une à une et je vous tiens au courant.
à+
vendredi 2 juin 2006 à 12:45:31 | Re : problème avec in_array( )

malalam

Administrateur CodeS-SourceS
Réponse acceptée !

Alors ça, c'est bizarre...c'est le 0 (en type int) qui est détecté comme étant == à 'invalide'.

<?php
$aArr = array (
'2006/06/01',
'Chambre',
'oui',
'neuf',
15,
0,
'non',
'oui',
26,
'rue',
'-',
'Olivaux',
'Nantes',
'44000',
'5 à 10mn',
'bus 25',
320,
'non',
68,
'Fougere',
'Anne-Marie',
'amarie@laposte.net',
'',
'0612456789',
);

$sSearch = 'invalide';

if (in_array ($sSearch, $aArr)) {
 echo 'trouvé';
} else {
 echo 'niet';
}
echo '<br />';
foreach ($aArr as $val) {
 if ($val == $sSearch) {
  echo $val, ' == ', $sSearch, '<br />';
 }
}
if ($sSearch) {
 echo 'invalide == true <br />';
}
if (!$sSearch) {
 echo 'invalide == false <br />';
}
if ($sSearch == 0) {
 echo 'invalide == 0 <br />';
}
if ($sSearch == 1) {
 echo 'invalide == 1 <br />';
}
if ($sSearch == true) {
 echo 'invalide == true <br />';
}
if ($sSearch == false) {
 echo 'invalide == false <br />';
}
if (0 == false) {
 echo '0 == false <br />';
}
echo 'donc : invalide == 0, 0 == false, mais invalide != false...';
?>

vendredi 2 juin 2006 à 13:59:03 | Re : problème avec in_array( )

Evangun

Réponse acceptée !
Oui, c'est aussi ce que j'ai trouvé, et après quelques recherches, voici les infos qe j'ai pu apprendre :

une chaine de caractères vaut true, et d'après les tableaux de comparaison trouvés ici,
php devrait retourner false pour ( 'invalide' = = 0 ) . Il y a aussi ce site.
Mais en réalité, d'après ce que j'ai compris de ce que dit un utilisateur dans les commentaires, dans le cas d'une comparaison string/integer, php  transforme le string en integer pour pouvoir comparer et là "string" vaut false.
Si c'est vraiment ce qui se passe, je suis assez dubitatif...
vendredi 2 juin 2006 à 14:34:56 | Re : problème avec in_array( )

FhX

Si c'est exactement ce qui se passe :) Voila pourquoi dans ce genre de cas, il vaut mieux prévoir le typage de ces variables :) Et vi, c'est PHP ca :p

1 2

Cette discussion est classée dans : problème, array, var1, in, invalide


Répondre à ce message

Sujets en rapport avec ce message

problème de in_array [ par R3VAN38 ] Tout d'abord, Bonsoir Lors de l'éxécution de ma page PHP, j'obtient cette erreur (en 30 Fois, car il y a 30 Jours en Novembre Warning: in_array() [fun in_array() [ par Epoc22 ] Bonjour a tous, J'ai un problème conçernant la fonction in_array(). En fait, je cherche à vérifier si le nombre<fo Problème simple de tableau (enfin je pense) [ par wiz4rd ] Bonjour, j'ai un soucis quand j'utilise la fonction [url=http://www.manuelphp.com/php/function.array-multisort.php]array_multisort()[/url]: Voici le Problème tableau associatif [ par Idok ] Bonjour, Je voudrais récupérer un array de la forme : Array ( [RED] => ROUGE [BLUE] => BLEU [GREEN] => VERTE [YELLOW] => JAUNE ) Je array en constantes de classe [ par christophedlr ] Bonsoir,Pour mon site (enfin CMS plutot ;)), je voulais utilisé un tableau comme constantes de classe, mais apparemment c'est refusé par PHP5, voici l problème Array , Checkbox et JPGraph [ par okhlaoma ] Bonjour, voilà mon problème :A partir d'une requete sur une base de donnée, j'ai un tableau html avec à chaque ligne une case à cocher . Cette case a Probleme de reset sur un array () [ par agparchitecture ] Bonjour à tous, je compte sur vos connaissances pour pouvoir m'éclairer. Mon problème est le suivant: [code=php]<?php $Accept_Lang=explode(',',$_SER Problème comparaison des clés de deux tableaux [ par riyuhou ] Bonjours à tous. Depuis le temps que je suis inscrit ici enfin mon premier message. Ma question est je pense assez simple, j'aimerais savoir si il est problème avec PhpMyadmin!!!!!!!!! [ par rachidphp93 ] bonjour tout le monde; J'ai configuré PhpMyadmin il marche bien sauf que quand je veux modifier ou i jpgraph : problème avec array [ par brezoneg ] re bonjour, Je réalise des graphiques avec jpgraph. entre autre code, j'utilise : $graph->SetTitles(array("","","","","","","","")); ça marche très bi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,402 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales