关于PHP代码的困惑

时间:2016-05-23 17:27:08

标签: php

道歉,如果这是基本的,但我正在学习php。

这段代码实际上做了什么?我已经在插件的源代码中看到了它,但无法弄清楚发生了什么

$_POST['newName'] = $_POST['newName'] == "" ? "Dude" : $_POST['newName'];

感谢。

4 个答案:

答案 0 :(得分:1)

这是if ... else的简短版本。这是Ternary Logic

$_POST['newName'] = $_POST['newName'] == "" ? "Dude" : $_POST['newName'];

如果$_POST['newName'] == ""为真,那么"Dude"$_POST['newName']

并且该值都将在$_POST['newName']中设置。

您可以这样写:[完整形式]

if($_POST['newName'] == "") 
    $_POST['newName'] = "Dude";

答案 1 :(得分:1)

?也被称为三元运算符。它被称为三元运算符,因为它需要三个操作数 - 一个条件,一个结果为true,一个结果为false。如果这听起来像是对你的if语句,你就是对的钱 - 三元运算符是if语句的简写(虽然很难读)。这是一个例子:

   <?php
   $agestr = ($age < 16) ? 'child' : 'adult';
    ?>

首先是一个条件($ age&lt; 16),然后是一个问号,然后是一个真实的结果,一个冒号和一个错误的结果。如果$ age小于16,则$ agestr将设置为&#39; child&#39;否则将设置为&#39; adult&#39;。单行三元语句可以用这样的正常if语句表示:

<?php
if ($age < 16) {
    $agestr = 'child';
} else {
    $agestr = 'adult';
}

&GT?; 因此,从本质上讲,使用三元运算符可以将五行代码压缩成一行,但代价是可读性。

答案 2 :(得分:0)

有时在编码时,您可能会觉得编写if(...){...}else{...}可能会觉得对于少量代码有点过分:

$result;
if (20>3)
{
  $result = "bigger!";
}
else
{
  $result = "smaller!";
}

因此,创建了一个简写符号,您可以在这里表达完全相同的语句,但不需要这么大的结构:

$result = (20>3) ? "bigger!" : "smaller!" ;

=?之间的任何内容都是() if(...)之间的条件。如果该表达式等于true,则$result获得的值为:"bigger!",如果等于false,则结果为:{{1} }。

答案 3 :(得分:0)

正如Frayne所说,它是条件陈述的缩短版本。当我们以完整的形式写它时,它就变成了:

Col_D
6483