这是我的代码:
$num = 1; // it always is either 0 or 1
if ( $num == 1 ){
$num = 0
} else {
$num = 1;
}
如您所见,我的代码切换了数字。这对我来说真的很难看。我猜对了php应该有这样做的功能。但经过一些搜索,我没有发现任何相似之处。无论如何,我能做到更标准,更好吗?
Currectly我正在编写一个伟大的公司。这就是我想写清洁和专业代码的原因。
答案 0 :(得分:14)
您的方法是正确的,也可以。只需要将其包装成一个函数。另一种方法是使用^ (Bitwise XOR)
来实现功能性和更干净:
function toggleNumber( $num ) {
return $num ^= 1;
}
该函数获取数字并与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
答案 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;