草庐IT

php - echo语句php中的三元运算符

Thisquestionisunlikelytohelpanyfuturevisitors;itisonlyrelevanttoasmallgeographicarea,aspecificmomentintime,oranextraordinarilynarrowsituationthatisnotgenerallyapplicabletotheworldwideaudienceoftheinternet.Forhelpmakingthisquestionmorebroadlyapplicable,visitthehelpcenter。已关闭8年。我正在尝试使用tenary运算符将if

php - 不寻常的三元运算

我被要求执行这个三元运算符使用的操作:$test='one';echo$test=='one'?'one':$test=='two'?'two':'three';打印两个(使用php检查)。我仍然不确定这其中的逻辑。拜托,谁能告诉我这其中的逻辑。 最佳答案 嗯,那个?和:具有相同的优先级,因此PHP将从左到右依次解析每一位:echo($test=='one'?'one':$test=='two')?'two':'three';第一个$test=='one'返回true,因此第一个括号的值为'one'。现在第二个三元是这样计算的:'o

PHP 多个三元运算符未按预期工作

为什么要打印2?echotrue?1:true?2:3;根据我的理解,它应该打印1。为什么它没有按预期工作? 最佳答案 因为你写的是一样的:echo(true?1:true)?2:3;如您所知,1的计算结果为true。你期望的是:echo(true)?1:(true?2:3);所以总是使用大括号来避免这种混淆。如前所述,三元表达式在PHP中是左关联的。这意味着首先将执行从左边开始的第一个,然后是第二个,依此类推。 关于PHP多个三元运算符未按预期工作,我们在StackOverflow上找

php - 为什么三元运算符比 if/else 更复杂?

我正在使用pdepend测试我的库,一些函数具有难以置信的高复杂性。我刚刚意识到它来自三元运算符,但我不确定为什么。具有如下功能:functiontest($a){return$a>10?5:20;}pdepend返回的复杂度(npath)为5。为什么有5个不同的路径?我只看到2个。具有如下功能:functiontest($a){if($a>10)return5;elsereturn20;}npath复杂度为2。这是有道理的。编辑:好的,我查看了另一个问题:PMD-NPathcomplexityveryhighwithternaryoperator(?它是算法的一部分。不过,该函数只有

PHP Elseif 三元运算符

我正在尝试将以下代码转换为三元运算符,但它不起作用,我不确定原因。我认为我的问题是我不知道如何以三元格式表达elseif操作。据我了解,elseif的执行方式与if操作相同,使用格式:(condition)?“结果”。if($i==0){$top='';}elseif($i%5==0){$top='';}else{$top='';}$top=($i==0)?'':($i%5==0)?'':''; 最佳答案 $top=($i==0)?'':(($i%5==0)?'':'');您需要在整个elseblock周围添加括号

php - 使用嵌套的三元运算符

这个问题在这里已经有了答案:StackingMultipleTernaryOperatorsinPHP(11个答案)关闭2年前。我一直在尝试以如下嵌套形式使用isset():isset($_POST['selectedTemplate'])?$_POST['selectedTemplate']:isset($_GET['selectedTemplate'])?$_GET['selectedTemplate']:0但是我好像漏掉了什么。谁能帮我怎么做?

php - 使用三元运算符时可以通过引用传递吗?

简单的问题,简单的代码。这有效:$x=&$_SESSION['foo'];这不是:$x=(isset($_SESSION['foo']))?&$_SESSION['foo']:false;它抛出PHPParse错误:语法错误,意外的'&'。使用条件运算符时是否不能通过引用传递,为什么不呢?如果?和&之间有空格也会发生。 最佳答案 在非常简单的情况下,这个表达式是非法的;$c=condition?&$a:&$b;//Syntaxerror可以这样写:$c=&${condition?'a':'b'};在您的具体情况下,如果条件为假,您不

PHP 速记三元运算符 "?:"意外解析错误 ":"

我刚刚将一些旧的PHP文件上传到新服务器,并且在速记三元操作上遇到解析错误(意外的':')。例如:$y=$x?:"Somedefault";php版本是5.2.16代码中到处都是这些简写?p> 最佳答案 这仅在PHP5.3之后可用Theexpression(expr1)?(expr2):(expr3)evaluatestoexpr2ifexpr1evaluatestoTRUE,andexpr3ifexpr1evaluatestoFALSE.SincePHP5.3,itispossibletoleaveoutthemiddlepart

php - 在 PHP 中堆叠多个三元运算符

这是我写的:$Myprovince=(($province==6)?"city-1":($province==7)?"city-2":($province==8)?"city-3":($province==30)?"city-4":"outofborders");但对于每个字段,我都得到值city-4。我想使用三元运算符而不是switch/if,因为我想试验看看它是如何完成的。这段代码有什么问题? 最佳答案 其他人已经提出了正确的做法,但如果你真的想使用三元运算符,你需要使用括号作为:$province=7;$Myprovince=

php - 您对三元运算符使用哪种编码风格?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。如果它很短,我将它保持在单行中。最近,我一直在将这种样式用于更长或嵌套的三元运算符表达式。一个人为的例子:$value=($a==$b)?'truevalue#1':($a==$c)?'truevalue#2':'falsevalue';就您个人而言,您使用哪种风格,或者觉得哪种风格最具可读性?编辑:(关于何时使用三元运算符)我通常避免使用超过2层的深度