PHP到javascript实现中的布尔变量值

jul*_*lio 28 javascript php boolean-expression

我在编写的PHP脚本中遇到了一个奇怪的问题 - 我确信这是一个简单的答案,但我没有看到它.

我正在使用PHP从数据库中提取一些变量,然后将这些值传递给在PHP中动态构建的Javascript.像这样的东西:

$myvar = (bool) $db_return->myvar;

$js = "<script type=text/javascript>
        var myvar = " . $myvar . ";
        var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
       </script>";
Run Code Online (Sandbox Code Playgroud)

问题是如果DB中"myvar"的布尔值是false,那么$ js中myvar的实例是null,而不是false,这就破坏了脚本.

有没有办法将值正确传递false给myvar变量?

谢谢!

Mar*_*c B 61

json_encode().它将从本机PHP类型转换为本机Javascript类型:

var myvar = <?php echo json_encode($my_var); ?>;
Run Code Online (Sandbox Code Playgroud)

并将照顾任何必要的转义,将其转换为有效的JavaScript.

  • 非常聪明的解决方案Marc,它运作良好!谢谢.我还应该指出,问题是将其转换为布尔值 - 如果我转换为int,它会返回0/1值,这可以作为int传递给JS,并进行评估通常是JS的真/假. (2认同)

Wh1*_*Ck5 5

这是最简单的解决方案:

只需在$ js中使用var_export($ myvar)而不是$ myvar ;

$js = "<script type=text/javascript>
        var myvar = " . var_export($myvar) . ";
        var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
       </script>";
Run Code Online (Sandbox Code Playgroud)

注意:var_export()与PHP 4.2.0+兼容