Ya que sans nom pour truster un haut de page s’en le faire valoir… c’est triste ![]()
J’était persuadé avoir déjà utilisé une systaxe dans les if pour justement pouvoir utilisé des if du genre :
if (isset($var) || $var == null)
Je croi que c’était
if ( !( ! ( isset($var) ) then && ( $var != null) ) )
Le but était, si le premier était faux, ca ne cherchais même pas à traité la 2eme solutions ( car 0 et quelque chose ca fait 0, donc inutile de traité la suite, on connait le résultat ), et donc ca ne sortais pas d’érreur si $var n’était vraiment pas défini.
Quelqu’un se souvien d’un truc du genre ou j’ai révé ? Je trouve rien sur le net :o
Edité le 07/02/2008 à 14:24
euh bah quand tu testes une conditions en &&, de mémoire dès qu’un élément rend la condition fausse, tu ne testes pas les suivantes :neutre:
if ( isset($var) && is_string($var) && (strlen($var) > 10) )
si $var n’est pas définis, il ne testeras si $var est une chaine et si sa longueur est supérieur à 10.
si $var existe mais n’est pas une chaine, il ne testeras pas sa longueur
si $var existe et est une chaine, alors il testerais la longueur
( isset() et is_string() font peut-être double usage, j’ai la flemme d’aller regarder la doc PHP :o [:shy] )
Edité le 07/02/2008 à 14:35
bah dans ce cas, pourquoi l’exemple que j’ai posté au-dessus n’affiche aucune erreur, warning ou notice si $var n’existe pas ? :neutre:
c’est bien que les conditions après la première ne sont pas testé, non ? parce que si tu fais un strlen() d’une variable qui n’existe pas, il y’auras une erreur ou un warning :neutre: …
Je suis persuadé qu’il existe un « opérateur » pour indiqué qu’il n’est pas la peine de testé les autres variable en fonction de la premiere et de l’opérateur, avec le « then » je continue à cherché ![]()
Kiss > Justement, il résoud chaque partie, et apres il effectu les opérations dans l’ordre : Si tu fait
$a = 1;
$b = NULL;
if( $a == 1 || $b = '123ff' ) {
echo $b; // affiche '123ff'
}
Edité le 07/02/2008 à 15:19
SN, prend tes pilules :o
Faux jmgchouchou: le compilateur est « lazy ».
ie: si tu as
a && b → a faux => expression fausse (FAUX et ? = FAUX)
a || b → a vrai => expression vraie (VRAI ou ? = VRAI)
Et C, PHP, Java, D, etc, n’échappent pas à ça.
C’est pas se que j’avais retenue alors donc,
if( isset( $var ) || $var == NULL )
peut etre remplacé directement par
if( !( ! isset( $var ) && $var != NULL ) )
et la ca fait pas d’erreur.
Edité le 07/02/2008 à 15:14
Je me suis planté, je suis allez trop vite pour le isset( $var ) :X
Sinon, d’apres SN, le $b ne devrai pas etre affecté sur mon exemple, vu que 1 ou quelque chose ca fera 1, il traite le reste car ca sert à rien. Je devrai testé mes codes avant de dire n’import quoi ![]()
``` <?php
$a = 1;
$b = 30;
if( $a == 1 || $b = 10 ) {
echo $b;
}
?>
Ca affiche 30, donc c'est bien ca, ya pas besoin du truc que je cherchais bêtement :D
Je confirme les dires de kiss, ce genre de tests vautreraient si les 2 conditions étaient testées (pour var null):
if(var != null && var.size() > 0){
}
Tain ça flood :o
Tain ça flood :o
voué, mais ça flood utile :o
(ou pas [:shy] )
Pour vos PNG transparents…
« Je tiens compte de mes erreurs, et j’ai décidé de me retirer du monde de la programmation et de me retirer sur l’ile de Ré. » :ennuye:
[:shy]
Pour en revenir aux isset(), le problème étant de surcroit que dans un site web basique on est souvent amené à tester les valeurs postées par l’utilisateur, en passant donc par des variables globales telles que $_POST ou $_GET. Et le problème est que même vide ou avec des clé inexistantes, les variables globales existent toujours avec isset().
La clé « test » de $_GET n’existe pas pourtant:
var_dump(isset($_GET[‹ test ›])); // True
var_dump(!empty($_GET[‹ test ›])); // False
var_dump(array_key_exists(‹ test ›, $_GET)); // False
Ce que j’avais aussi perdu de vu c’est que array_key_exists() ne teste que l’existence de la clé, alors que empty() teste à la fois l’existence et le contenu. Ainsi :
$a=array(‹ test › => NULL);
var_dump(!empty($a[‹ test ›])); // False
var_dump(array_key_exists(‹ test ›, $a)); // True
Tu m’as collé mal à la tête pour le coup ![]()
TheGuit > Bravo pour le permis ![]()
Petite question, comment peut-on changer son ip relativement rapidement avec un routeur tel une box (sans devoir le redémarrer à chaque fois). J’ai testé de passer par des proxy pour « masquer » mon ip mais ce que je veux faire ça ne marche pas.
En shell :
> ifconfig up & ifconfig down
Ou
> dhclient (je crois)
Cela dit, avec certains FAI : tu as ta propre IP attitrée… donc tu récupèreras la même :S
TheGuit > Bravo pour le permis
Merci
Bon sinon j’ai pas lu toutes vos pérégrination PHPesque (et autre) mais je suis d’accord !
Sinon comment ca va les gens ?
Mon FAI change l’IP à chaque connexion. Pour dhclient j’avais déjà jetté un oeil rapide une fois je crois, faudra que j’y retourne. Sinon j’ai quand même réussis à résoudre mon problème, en faite c’est que j’utilisais un proxy PHP avec connexion SSL, et ça bloqué sur le site que je fréquentais lors d’envois de certaines données par formulaire. J’ai enlevé le SSL et ça a marché. Merci quand même!
[quote="TheGuit"] Bon sinon j'ai pas lu toutes vos pérégrination PHPesque (et autre) mais [b]je suis d'accor[/b]d ! [/quote] Ha, enfin quelqu'un qui me soutient quand je dis que array_key_exists() permet de retourner une chaine! :paf:
GG pour ton permis!