很难要求搜索这个问题,答案有助于清理我的代码。基本上,在PHP中,如果我使用:
if (this = that)
发生了什么事?是检查变量是否被正确分配,还是检查“那个”的真相,另外还将它分配给“这个?”
我问,因为如果答案是前者会更容易,因为它需要额外的一行来分配它,然后运行条件,然后再使用它的返回。我知道抓住一条线是微不足道的,但是在整个脚本上它可以加起来。谢谢你的帮助。
TO CLARIFY:我想基本上写下以下内容:
$this = something;
if ($this)
do things with $this
将其写为
if ($this = $myFunctionCall)
do things with $this;
假设$ this未事先设定。
答案 0 :(得分:7)
它正在分配,然后检查分配的值的“真实性”。
答案 1 :(得分:2)
它检查this
iirc的“真实性”,分配在评估之前发生
答案 2 :(得分:2)
莱纳斯,
无论它是否有效,我都不是测试中的分配方法的粉丝。我认为忽略ASSIGNMENT太容易了,它是未来错误的一个潜在(并且容易避免)的来源......我认为这种常用的编码范式“有点草率”。
在几乎所有“现代”语言中,您可以一步创建并分配一个局部变量......我发现它简洁,自我解释,并且可读性很强。
var stuff = getStuff();
if (stuff == null) {
Message("Sorry, no stuff found.");
return;
}
节
var thing, widget, stuff, foo;
.... then many lines later ...
if ((stuff=getStuff())) {
// do things with stuff
} else {
// no stuff
Message("Sorry, no stuff found.");
}
正如你所知,我也不是旧的“结构化编程”格言的粉丝,每个函数/方法/脚本应该有一个退出点。相反,我相信无论什么时候我们不能继续这样做,我们都应该尽可能以最直接的方式离开。这只是个人喜好。你可以为任何方法提出有效的论据。
建议的一句话:无论你做什么,都要做到这一点一致!程序员(在赛道上几年,当你继续前进的话)负责增强你的代码将会抓住 - 快到足以“你的风格”。他们可能不喜欢它,但这并不重要,只要他们了解它。简洁和明确之间始终存在着权衡......没有“正确”的风格......从长远来看,只有一些风格似乎比其他风格更好。
亲我的儿子,为了简洁而嘘声。
干杯。基思。
答案 3 :(得分:1)
首先将$ this设置为$ that,然后如果$ this == true,将执行if语句的内容。
答案 4 :(得分:1)
您将that
的值分配给this
并检查this
是否评估为真。
答案 5 :(得分:1)
是的,它先分配然后检查是否属实。
与遍历MySQL表时类似:
while ($row = mysql_get_row($query)) {
...
}
当它不再起作用时(弹出false
),循环中断。它在一行中分配和检查有效性。
答案 6 :(得分:1)
我想说它分配以及检查值,纯粹基于此代码
while($row = mysql_fetch_assoc($query))
{
// Query actions
}
我们都知道循环,直到没有更多的结果要处理。如果没有结果,mysql_fetch_assoc
会返回false
,但仍会分配该值,因此,它不会检查该值是否已分配,而是已分配的值。
答案 7 :(得分:1)
赋值操作($foo = 'bar'
)是表达式,其中值被赋值给变量。 表达式作为一个整体返回一个值。返回的值是已分配的值。
因此,if ($foo = 'bar')
与:
$foo = 'bar';
if ('bar') ...
答案 8 :(得分:0)
一些演示代码
$false = false;
$true = true;
$someVar = true;
function someFunk() {
return false;
}
if ($someVar = $false) {
echo "True \n";
} else {
echo "False \n";
}
if ($someVar = $true) {
echo "True \n";
} else {
echo "False \n";
}
if ($someVar = someFunk()) {
echo "True \n";
} else {
echo "False \n";
}
此输出
False
True
False
答案 9 :(得分:0)
if(this = that)
step 1->
此=那; //将数据从那里复制到此
step 2->
如果复制成功,那么代码就像这样
if(1)// true
如果复制失败,那么代码就像这样
if(0)// false