相关疑难解决方法(0)

三元运算符左侧相关性

在PHP手册中,我在"操作员"下找到以下"用户提供的注释 ".

请注意,在php中,三元运算符?:具有左关联性,与C和C++不同,它具有正确的关联性.

你不能编写这样的代码(正如你在C/C++中习惯的那样):

<?php 
$a = 2; 
echo ( 
    $a == 1 ? 'one' : 
    $a == 2 ? 'two' : 
    $a == 3 ? 'three' : 
    $a == 4 ? 'four' : 'other'); 
echo "\n"; 
// prints 'four' 
Run Code Online (Sandbox Code Playgroud)

我实际上尝试它,它真的打印four.但是,我无法理解它背后的原因,仍然觉得它应该打印twoother.

有人可以解释一下这里发生了什么,为什么打印'四'?

php ternary-operator associativity

37
推荐指数
3
解决办法
8369
查看次数

嵌套的php三元麻烦:三元输出!= if - else

我非常有能力使用PHP三元运算符.然而,我试图弄清楚为什么下面的代码与if-else等效结构不匹配时遇到了障碍.测试在不同的数字上运行三次.每个结构的输出都在代码下面.

三元:

$decimal_places = ($max <= 1) ? 2 : ($max > 3) ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)

三元输出:

最大值:-100000十进制:0

最大值:0.48十进制:0

最大值:0.15十进制:0

如果别的

if($max <= 1)
 $decimal_places = 2;
elseif($max > 3)
 $decimal_places = 0;
else
 $decimal_places = 1;
Run Code Online (Sandbox Code Playgroud)

If-Else输出:

最大值:-100000十进制:2

最大值:0.48十进制:2

最大值:0.15十进制:2

任何人都可以告诉我为什么这两个控制结构不输出相同的数据?

php

5
推荐指数
1
解决办法
1388
查看次数

标签 统计

php ×2

associativity ×1

ternary-operator ×1