如何切换布尔值?

时间:2017-06-17 18:40:29

标签: php function numbers

这是我的代码:

$num = 1; // it always is either 0 or 1

if ( $num == 1 ){
    $num = 0
} else {
    $num = 1;
}

如您所见,我的代码切换了数字。这对我来说真的很难看。我猜对了php应该有这样做的功能。但经过一些搜索,我没有发现任何相似之处。无论如何,我能做到更标准,更好吗?

Currectly我正在编写一个伟大的公司。这就是我想写清洁和专业代码的原因。

8 个答案:

答案 0 :(得分:14)

您的方法是正确的,也可以。只需要将其包装成一个函数。另一种方法是使用^ (Bitwise XOR)来实现功能性和更干净:

function toggleNumber( $num ) {
    return $num ^= 1;
}

Online Demo

该函数获取数字并与1进行异或。然后该号码将被切换。

答案 1 :(得分:5)

以下所有Mothods仅使用1行代码

方法1)使用<?php $num = 1; $num = (int) !$num; // method 1 运算符

<?php 

  $num =1;

  $num = array(1,0)[$num];  //method 2

方法2)使用数组以num作为索引返回

<?php 

  $num =1;

  $num = (int) ($num < 1);  // if 1 return 0 else return 1 , method 3

方法3)使用条件运算符

<?php 

  $num = 1;

  $num = (int)empty($num);  // method 4

方法4)使用空函数

进行黑客攻击
puts $browser.table(:id,"student_list").rows.count
  

Oneline Demo

答案 2 :(得分:2)

您只需使用{{1}}运算符即可在{{1}}和{{1}}之间切换数字;

{{1}}

您可以直接使用{{1}}来切换号码。但功能是好方法。

答案 3 :(得分:2)

如果数字为1则返回0或1

,这里有几种有趣的方法
$num = 1;
function toggle1($num){
   if($num){
      return 0;
   }
   return 1;
}

没有争论,只需切换掉触发器动作

function toggle2(){
    static $num = 1;
    $num = ($num?0:1);
    return $num;
}

带参数

function toggle3($num){
    return ($num?0:1);
}
像@B一样。 Desai但是转向int

function toggle4($num){
    return (int) !$num;
}

像示例一样直接但三元

$num = 1;
$num = ($num?0:1);

答案 4 :(得分:2)

简单的减法。只需从1减去当前值。这不会像按位那样快速执行,但如果您在团队中工作,其他编码员将很容易理解。性能差异将以纳秒为单位进行测量。 $num=1-$num是单行表达式,不使用条件语句。

$num=1;

echo $num=1-$num,"\n";  // 0
echo $num=1-$num,"\n";  // 1
echo $num=1-$num;       // 0

答案 5 :(得分:2)

如果您正在为一家伟大的公司编写代码,那么您不希望使用一个充当布尔值的数字。

如果您确定您的号码始终为0或1,请使用Boolean。这有一些原因:

  • 在几天/几年/几年内,您将不得不再次运行此代码,并且您将看到一个数字,所以也许您会忘记您隐式设置的0/1规则。

  • 如果有人读过您的代码,他怎么会知道这只能是0/1?

  • 当您(或其他人)撰写有关该文档的文档时,您是否真的想要输入:“这是一个只能为0或1的数字?”

如果您正在使用布尔值,那么您要求的切换事件要容易得多:

$value = TRUE; //TRUE is a PHP Constant

$value = !$value; //Toggled, $value is now equal to FALSE

if ($value) { } //instead of if ($num == 1)
if (!$value) { } //instead of if ($num == 0)

在文档中,您可以声明这是一个布尔值,每个人都知道只有两种可能:TRUE或FALSE。

答案 6 :(得分:2)

  

在一行中你可以做到

$num = 1;
echo ($num == 1) ? 0 : 1;

答案 7 :(得分:-1)

另一种方法是:

$num = 1 - $num;