-2

对于模板引擎,我想使用 if 条件的简写。我需要检查一个值是否为 != null 如果为真则打印出一些行。我尝试了什么:

echo "test" ($user->affiliate_id !=null) ?   

我不知道在后面写什么?

4

5 回答 5

2

该行$someVariable = $condition ? $valueA : $valueB相当于:

if ( $condition ) {
    $someVariable = $valueA;
}
else {
    $someVariable = $valueB;
}

因此,基本上,如果条件是TRUE$someVariable将采用?符号后的第一个值。如果FALSE,它将采用第二个值(:符号后面的那个)。

有一种特殊情况,您不能定义第一个值,它是这样的:$someVariable = $someValue ?: $someOtherValue. 它相当于:

if ( $someValue ) {
    $someVariable = $someValue;
}
else {
    $someVariable = $someOtherValue;
}

因此,如果$someValue评估为(与评估为TRUE不同的任何值),则将捕获该值。否则,它会捕获.0TRUE$someVariable$someOtherValue

给你举个例子:

function printGender( $gender ) {
    echo "The user's gender is: " . ( $gender == 0 ? "Male" : "Female" );
}

printGender(0); // Will print "The user's gender is: Male"
printGender(1); // Will print "The user's gender is: Female"

另一个例子:

function printValuesStrictlyDifferentThanZero( $value ) {
    echo "Value: " . ( $value ?: 1 );
}

printValuesStrictlyDifferentThanZero(0); // $value evaluates to FALSE, so it echoes 1
printValuesStrictlyDifferentThanZero(1); // $value evaluates to TRUE, so it echoes that $value

编辑:

运算?:称为ternary operator. 有多种方法可以定义三元运算符(采用三个操作数的运算符)。它三元运算符,但不是三元运算符。有些人只是称它为三元运算符,因为他们习惯于这样做,而且它可能是 PHP 中唯一广为人知的三元运算符,但三元运算符比这更通用。

它的名字是条件运算符,或者更严格地说,是三元条件运算符

假设我定义了一个新的运算符,称为内联,如果以 为底log base的数字的对数等于,其语法类似于,如果对数正确或不正确,则返回。$A$C$B$correct = $A log $B base $CTRUEFALSE

当然,该操作是假设的,但它一个三元运算符,就像?:. 我将把它称为对数检查运算符

于 2016-01-27T13:11:50.180 回答
1

语法应该是这样的

echo (condition) ? write if true code part here : write else part here

这意味着在你的情况下它会像

echo ($user->affiliate_id !=null) ? 'test' : 'not null'
于 2016-01-27T12:46:34.653 回答
1

正如@Federinco 所说,它被称为三元运算符,官方文档在这里:http ://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

三元运算符的工作方式如下:

condition ? true branch : false branch

所以一个例子是:

$cost = isset($discount) ? $total - $discount : $total;

在上面的例子中,我们检查是否设置了折扣,如果设置了折扣,我们从当前总数中删除折扣,如果没有,我们只需将成本设置为总数。

您还可以使用三元运算符做其他很酷的事情,如下所示:

$name = $username ?: 'Guest';

在上面的代码中,我们正在检查是否$username存在,如果是我们设置$name$username否则我们设置$name等于Guest

不过需要注意的是,如果您滥用三元运算符,它可能会导致可读性问题,因此请小心使用它,如果三元运算符不明确,请不要牺牲标准条件语句的额外行它在做什么。

于 2016-01-27T12:48:35.303 回答
0

试试这个:

echo ($user->affiliate_id != null )?"test":"";
于 2016-01-27T12:46:39.723 回答
0

你想要的是三元运算符

您的代码应如下所示

echo "test" . (($user->affiliate_id !=null) ? 'stringToOutput ifNotNull' : 'stringToOutput if is null');

此外,PHP 7 引入了可以使用的Null 合并运算符。你可以这样做

echo 'test' . ($user->affiliate_id ?? 'ID not found!');

在这种情况下,如果设置了 $user->affiliate_id 并且不为空,则将打印它而不是“未找到 ID!” 信息

于 2016-01-27T12:59:05.510 回答