Php 如何切换布尔数?
这是我的密码:Php 如何切换布尔数?,php,function,numbers,Php,Function,Numbers,这是我的密码: $num = 1; // it always is either 0 or 1 if ( $num == 1 ){ $num = 0 } else { $num = 1; } 如您所见,我的代码切换数字。这对我来说真的很难看。我猜php应该有一个这样做的函数。但经过一些搜索,我没有发现任何类似的东西。不管怎样,我能做得更标准更好吗 目前我正在为一家伟大的公司编码。这就是为什么我想编写干净、专业的代码。您的方法是正确的,也会起作用。你只需要把它包装成一个函数。另
$num = 1; // it always is either 0 or 1
if ( $num == 1 ){
$num = 0
} else {
$num = 1;
}
如您所见,我的代码切换数字。这对我来说真的很难看。我猜php应该有一个这样做的函数。但经过一些搜索,我没有发现任何类似的东西。不管怎样,我能做得更标准更好吗
目前我正在为一家伟大的公司编码。这就是为什么我想编写干净、专业的代码。您的方法是正确的,也会起作用。你只需要把它包装成一个函数。另一种方法是使用来实现功能性和更干净:
function toggleNumber( $num ) {
return $num ^= 1;
}
该函数获取数字,并使用1进行异或运算。然后将切换数字。您只需使用即可!运算符在0和1之间切换数字
您可以直接使用$num=intval$号码;切换数字。但功能是一个好方法 这里有几个有趣的方法,如果数字是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);
简单减法。只需从1中减去当前值。这不会像按位执行的那样快,但是如果您在团队中工作,其他程序员很容易理解。性能差异将以纳秒为单位进行测量$num=1-$num是不使用条件语句的单行表达式
$num=1;
echo $num=1-$num,"\n"; // 0
echo $num=1-$num,"\n"; // 1
echo $num=1-$num; // 0
如果你是为一家伟大的公司编码,你不想使用一个布尔数 如果您确实知道您的号码将始终为0或1,那么请使用。以下是一些原因: 再过几天/月/年,您将不得不再次运行此代码,您将看到一个数字,因此您可能会忘记隐式设置的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
一句话你就能做到
以下所有方法仅使用一行代码 方法1使用!接线员 方法2使用数组返回num作为索引
<?php
$num =1;
$num = array(1,0)[$num]; //method 2
方法3使用条件运算符
<?php
$num =1;
$num = (int) ($num < 1); // if 1 return 0 else return 1 , method 3
方法4使用空函数进行黑客攻击
<?php
$num = 1;
$num = (int)empty($num); // method 4
另一种方法是:
布尔数?为什么不使用实际的布尔值-真/假..为什么不直接使用!方法2、3或4不建议对值进行切换。所以你没有回答这个问题。编辑了我的答案。检查一下。在以前的编辑中,我试图显示它。现在,如果num的值为1,它将变为0,反之亦然,这是上述所有函数的实现。这里还有一个已编辑代码的演示。可能包含echo,只需删除它即可。更干净的版本是$num-=1;事实上,在这种情况下,如果num最初是0,那么之后它将变成0-1=-1。这样做是行不通的,请删除我先前发布的答案的这个迟来的副本,并重新获得您丢失的代表分数。
<?php
$num =1;
$num = array(1,0)[$num]; //method 2
<?php
$num =1;
$num = (int) ($num < 1); // if 1 return 0 else return 1 , method 3
<?php
$num = 1;
$num = (int)empty($num); // method 4
$num = 1 - $num;