gpt4 book ai didi

php - php三元运算符只有 'return'是真还是假?

转载 作者:行者123 更新时间:2023-11-28 11:39:39 26 4
gpt4 key购买 nike

我有一个 php 三元运算符,如下所示,但不起作用:

 var newLoginTxt = <?=$_SESSION['loginStatus']? 'Logged in' : 'Login'?>;
alert("About to set the navbar's login text to: " + newLoginTxt);

根本没有出现警告框。

但是这确实有效:

var curLoginStatusSessionVar = <?=$_SESSION['loginStatus']? 'true' : 'false'?>;
alert("Testing: " + curLoginStatusSessionVar);

出现警告框并显示“测试:错误”

我有以下文章似乎说 php 中的三元运算符实际上可以返回“true”或“false”以外的值: http://davidwalsh.name/php-shorthand-if-else-ternary-operators

好吧,更奇怪的是 - 在下面的代码中,为什么出现第一个“测试”警报框,然后不出现第二个“测试”警报框?这是完全相同的代码:

      // THIS "Testing" ALERT BOX APPEARS FINE**
var curLoginStatusSessionVar = <?=$_SESSION['loginStatus']? 'true' : "false"?>;
alert("Testing: " + curLoginStatusSessionVar);


var newLoginTxt = <?=$_SESSION['loginStatus']? 'Logged in' : 'Login'?>;
alert("About to set the navbar's login text to: " + newLoginTxt);


// THIS IDENTICAL "Testing" ALERT BOX NEVER APPEARS**
curLoginStatusSessionVar = <?=$_SESSION['loginStatus']? 'true' : 'false'?>;
alert("Testing" + curLoginStatusSessionVar);

最佳答案

您的问题与三元表达式完全无关:在 JavaScript 中,就像在现代 php 中一样,字符串必须用引号封装

true 和 false 恰好是 JavaScript 常量。因此,您想要:

var newLoginTxt = "<?=$_SESSION['loginStatus']? 'Logged in' : 'Login'?>";
// ^ ^

或者,如果数据更复杂,请使用 json_encode 。例如,如果您想在 JavaScript 中访问 php 变量 $title(可能包含引号)的值:

<?php $title = '"Java"Script'; ?>
var title = <?php echo json_encode($title); ?>;
alert(title);

关于php - php三元运算符只有 'return'是真还是假?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com