[RESOLU] Utilisation de booléen

Eléphant du PHP | 256 Messages

31 juil. 2013, 18:33

Bonjour,

Je développe avec WordPress et ce système de gestion de contenu dispose d'un outil de débogage.

Je ne comprends pas une alerte en Php qui n'est pas fort grave, mais agaçante car je ne la comprends pas.

1er cas
<?php
$a = '3';
if ($a == '4') :
$has_test = true;
endif;
if (! isset( $has_test) ) :
echo 'ok';
endif;
?>
ne renvoie pas d'erreur.

2ème cas
<?php
$a = '3';
if ($a == '4') :
$has_test = true;
endif;
if (! $has_test ) :
echo 'ok';
endif;
?>
renvoie une erreur "undefined_index".

3ème cas
<?php
$a = '3';
if ($a == '4') :
$has_test = true;
else :
$has_test = false;
endif;
if ( ! $has_test ) :
echo 'ok';
endif;
?>
renvoie l'erreur "undefined_index", comme si "false" est inutile (et source de bogue à l'usage dans des instructions plus complexes).

Pardon de poser une question si basique. :)

Merci pour vos lumières.

V.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

31 juil. 2013, 18:41

salut,


ton code ne peux pas indiquer une erreur undefinied index mais undefinied variable.

car dans le second cas la variable has_test n'existe pas !

le dernier cas ne retourne pas d'erreur (testé).

je te conseil d'éviter la syntaxe avec le endif, plus lourde à mon gout que les {}

Code fonctionnel (identique au 3ème cas)
<?php
$a = '3';
if ($a == '4') {
    $has_test = true;
} else {
    $has_test = false;
}
if (!$has_test) {
    echo 'ok';
}
@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 256 Messages

01 août 2013, 00:28

Bonjour Moggli,

Merci pour le conseil et les précieuses explications.

:)

Cordialement,

V.