Php 如果(这个=那个)-这里到底发生了什么?
很难问这个问题,答案将有助于清理我的代码一点。基本上,在PHP中,如果我使用:Php 如果(这个=那个)-这里到底发生了什么?,php,if-statement,conditional,Php,If Statement,Conditional,很难问这个问题,答案将有助于清理我的代码一点。基本上,在PHP中,如果我使用: if (this = that) 发生了什么事?它是在检查变量是否被正确分配,还是在检查“that”的真实性,同时也将其分配给“this” 我这样问是因为如果答案是前者会更容易,因为它需要额外的一行来分配它,然后运行条件,然后使用它的返回。我知道在一行文字上弹琴是微不足道的,但在整个脚本上它可以加起来。谢谢你的帮助 澄清一下:我想基本上写出以下内容: $this = something; if ($this)
if (this = that)
发生了什么事?它是在检查变量是否被正确分配,还是在检查“that”的真实性,同时也将其分配给“this”
我这样问是因为如果答案是前者会更容易,因为它需要额外的一行来分配它,然后运行条件,然后使用它的返回。我知道在一行文字上弹琴是微不足道的,但在整个脚本上它可以加起来。谢谢你的帮助
澄清一下:我想基本上写出以下内容:
$this = something;
if ($this)
do things with $this
把它写成
if ($this = $myFunctionCall)
do things with $this;
所有这些都假设$this没有事先设置。它检查
这个
iirc的“真实性”,赋值发生在赋值之前,然后它检查赋值的“真实性”。它将首先将$this设置为$that,然后如果$this==true,if语句的内容将被执行。您将把的值赋值给this
,然后检查this
是否为true。是,它首先赋值,然后检查它是否为true
与遍历MySQL表时类似:
while ($row = mysql_get_row($query)) {
...
}
当它不再工作时(弹出一个false
),循环中断。它在一行中分配和检查有效性。一些演示代码
$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
我想说的是,它分配和检查值,完全基于此代码
while($row = mysql_fetch_assoc($query))
{
// Query actions
}
我们都知道循环,直到没有更多的结果需要处理mysql\u fetch\u assoc
在没有结果保留时返回false
,但仍然分配了值,因此,它不会检查是否分配了值,而是检查分配的值。if(this=that)
步骤1->
这个=那个//将数据从那个复制到这个
步骤2->
如果复制成功,那么代码就会变成这样
if(1)//true
如果复制失败,则代码如下
如果(0)//false赋值操作($foo='bar'
)是一个表达式,其中一个值被赋值给一个变量。表达式作为一个整体返回一个值。返回的值是已分配的值
因此,if($foo='bar')
与:
$foo = 'bar';
if ('bar') ...
莱纳斯
不管它是否有效,我不喜欢测试方法中的赋值。我认为很容易忽视这个任务,因为它是未来bug的潜在(并且很容易避免)来源。。。我认为这种常用的编码模式“有点马虎”
在几乎所有的“现代”语言中,您可以一步创建和分配局部变量。。。我觉得它简洁明了,不言自明,而且可读性很强
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.");
}
正如你所知道的,我绝对不是“结构化编程”这句老话的粉丝,那就是每个函数/方法/脚本都应该有一个退出点。相反,我认为,每当我们遇到一种情况,意味着我们不能继续在这里,我们应该离开,以最直接的路线可能。这只是个人喜好。你可以对任何方法进行有效的论证
一句忠告:无论你做什么,坚持做负责增强代码的程序员(几年后,当你继续前进)会很快适应“你的风格”。他们可能不喜欢,但这并不重要,只要他们理解。简洁和明确之间总是有一个平衡点。。。没有“正确”的样式。。。只是从长远来看,有些风格似乎比其他风格更有效
吻它吧,我的儿子,booger说得简洁
干杯。Keith。你可以测试:)你会记得,这样。它也应该是:如果(这个==那个)是的,我真的需要设置一个XAMMP或什么的,因为当你必须上传到你的服务器时,测试这些东西是非常痛苦的。@Jamie,他在一个if语句中特别询问了赋值的问题,所以我认为他是认真的。@xanadont我同意,虽然你可以看到发生了什么,但99.9%的时间你看到如果(this=that)
这是一个打字错误,而不是故意的。IDE实际上强调它是一个可能的错误。因此,如果另一个开发人员拿起您的代码,这将作为一个错误跳出。至少你应该留下一条评论,说这不是一个错误,当你这么做的时候,你可以用“标准”的方式在上面的行中赋值,如果@prodigitalson是我最喜欢的非单词sexcellent之一,这就是我想听到的,同样感谢下面的所有答案。作业怎么会失败?$str='hi'$str=打印(数组);