mi declaración "si" devuelve falso incluso si es verdadero, ¿por qué?

$status devuelve 0, pero el bucle actúa como su "1". Lo curioso aquí es que mi mensaje de error es "MySQL DB está en uso (estado 0)".

En otras palabras: mi declaración if falla incluso si es verdadera.

¿Dónde está el error?

include 'status_check.php'; //it takes $check from MySQL DB
if($status = "0") { //if status is 0 go on
    include 'status_1.php'; //set status to 1
            ...
    include 'status_0.php'; //after finished operation set status back to 0
} else { //if status is 1 say that its 1
    echo "MySQL DB is in use (status ". $status .")";
    die;
}

preguntado el 03 de mayo de 12 a las 15:05

Te falta un signo igual. -

($status == "0") ¡Igualdad, no asignación! -

Use el signo "igual": if($status == "0") -

1 Respuestas

Estás asignando, no comparando.

if($status = "0") {

Haz eso == para una comparación.

Por lo tanto, es falso porque la cadena "0" se trata como un valor "falso" en PHP. Documentos: http://php.net/boolean#language.types.boolean.casting

contestado el 03 de mayo de 12 a las 15:05

Probablemente deberías explicar por qué $status = "0" evalúa a false también. - Jon

@Jon señaló. Gracias por la sugerencia. - Wiseguy

if($status = '0') es falso, porque es como decir if('0') - Mirko Akov

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.