web-dev-qa-db-ja.com

PHP tojavascriptimplementationのブール変数値

私が書いているPHPスクリプトで奇妙な問題に遭遇しました-簡単な答えがあると確信していますが、私はそれを見ていません。

PHPを使用してDBからいくつかの変数を取得し、それらの値を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>";

問題は、「myvar」のDBのブール値がfalseの場合、$ jsのmyvarのインスタンスがfalseではなくnullであり、これがスクリプトを壊していることです。

falseをmyvar変数に適切に渡す方法はありますか?

ありがとう!

30
julio

json_encode()を使用します。ネイティブPHPタイプからネイティブJavascriptタイプに変換します:

var myvar = <?php echo json_encode($my_var); ?>;

また、それを有効なJavaScriptに変換するために必要なエスケープも処理します。

60
Marc B

これが最も簡単な解決策です。

$ jsで$ myvarの代わりにvar_export($ myvar)を使用するだけです;

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

注: var_export() はPHP 4.2.0+と互換性があります

5
Wh1T3h4Ck5
$js = "<script type=text/javascript>
    var myvar = " . ($myvar ? 'true' : 'false') . ";
    var myurl = 'http://someserver.com/ajaxpage.php?urlvar=myvar';
   </script>";
3
Hamish