在PHP中使用布尔运算进行操作


Operating with booleans in PHP

好吧,我来自Java编译语言,现在我正在尝试在一些特定领域处理PHP。今天,我创建了一个"测试表单"来了解如何检查有效值,现在我遇到了一个小问题。

假设我有多个字段要评估,使用一个布尔变量,我想做这样的事情:

//ASSUMING THAT ALL IS CORRECT
$correct =  true;
$correct &= is_ok($name);
$correct &= is_ok($last_name);
$correct &= is_ok($nickname);
$correct &= is_ok($best_friend);
if (!$correct) {
    //AT LEAST ONE FIELD IS INCOMPLETE
}
else
{
    // EVERYTHING IS OK
}
function is_ok($field){
    return !empty($field);
}

我发布的问题是&=看起来工作不正常。我需要使用另一个布尔运算符吗?

始终先阅读手册:

  • http://php.net/manual/en/language.operators.bitwise.php
  • http://php.net/manual/en/language.operators.logical.php

Bitwise operators!=逻辑运算符

我想你正在寻找这个:

//ASSUMING THAT ALL IS CORRECT
$correct =  true;
$correct = $correct && is_ok($name);
$correct = $correct && is_ok($last_name);
$correct = $correct && is_ok($nickname);
$correct = $correct && is_ok($best_friend);

你应该从教程、基本课程、基本文档开始,以避免出现这种问题。

if (is_ok($name) && is_ok($last_name) && is_ok($nickname) && is_ok($best_friend)) {
  echo "Good.";  
} else{
  echo "Bad.";
}

或者更简单地说

if (!empty($name) && !empty($last_name) && !empty($nickname) && !empty($best_friend)) {
  echo "Good.";  
} else{
  echo "Bad.";
}

如果你真的想按照你想要的方式写:

$correct = true;
$correct = $correct && is_ok($name);
$correct = $correct && is_ok($last_name);
$correct = $correct && is_ok($nickname);
$correct = $correct && is_ok($best_friend);

amp;是按位运算符。对于bloolean用途&,像

`$correct =  $correct && is_ok($name);`

因为

echo 1 & 2 

给出0