Pasar el valor booleano verdadero / falso de una cadena a un argumento de funciones

Muchas gracias por leer y responder si puedes.

  • En una función, pruebo una condición y hago una cadena ‘verdadera’ o ‘falsa’, que luego hago una variable global.
  • Luego llamo a otra función con esa cadena como parámetro
  • Dentro de la statement if de esa función, quiero hacer una prueba basada en el valor booleano de cadenas “verdadero” o “falso”

    $email_form_comments = $_POST['comments']; // pull post data from form if ($email_form_comments) $comments_status = true; // test if $email_form_comments is instantiated. If so, $comments_status is set to true else $error = true; // if not, error set to true. test_another_condition($comments_status); // pass $comments_status value as parameter function test_another_condition($condition) { if($condition != 'true') { // I expect $condition to == 'true'parameter $output = "Your Condition Failed"; return $output; } } 

Mi pensamiento es que $ condición tendrá un valor “verdadero”, pero esto no es así.

Creo que la clave aquí es que PHP evaluará las cadenas vacías como cadenas falsas y no vacías como verdaderas, y al establecer y comparar booleanos, asegúrese de usar constantes sin comillas. Use true o false no es 'true' o 'false' . Además, sugiero que escriba sus sentencias if para que establezcan valores alternativos en una sola variable, o en el caso de una función, devuelva un valor alternativo cuando la condición falle.

Hice algunas pequeñas modificaciones a su código para que su función evalúe verdadero

 // simulate post content $_POST['comments'] = 'foo'; // non-empty string will evaluate true #$_POST['comments'] = ''; // empty string will evaluate false $email_form_comments = $_POST['comments']; // pull post data from form if ($email_form_comments) { $comments_status = true; // test if $email_form_comments is instantiated. If so, $comments_status is set to true } else { $comments_status = false; // if not, error set to true. } echo test_another_condition($comments_status); // pass $comments_status value as parameter function test_another_condition($condition) { if ($condition !== true) { return 'Your Condition Failed'; } return 'Your Condition Passed'; }