Большое вам спасибо за чтение и ответ, если сможете.
Внутри оператора if if, я хочу проверить, основываясь на строках логического значения «true» или «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 $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; } }
Я думаю, что условие $ будет содержать «истинное» значение, но это не так.
Я думаю, что ключевым моментом здесь является то, что PHP будет оценивать пустые строки как ложные и непустые строки как истинные, а при настройке и сравнении булевых данных обязательно используйте константы без кавычек. Используйте true
или false
не 'true'
или 'false'
. Кроме того, я предлагаю писать ваши операторы if, чтобы они задавали альтернативные значения для одной переменной или в случае функции возвращали альтернативное значение, когда условие терпит неудачу.
Я внес некоторые небольшие изменения в ваш код, чтобы ваша функция оценила true
// 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'; }