0

我的主要问题是,为什么会打印出以下代码:

false

boolean value true

我希望变量“布尔”值也是错误的

我想在 javascript 中存储一些数据,然后在 PHP 中使用它,这甚至可能吗?

<!doctype html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Storage test?</title>
</head>
<body>
    <script type='text/javascript'>
        localStorage.save = 'false';
    </script>
    <?php
        $boolean = "<script type='text/javascript'>" .
                   "document.write(localStorage.save);".
                   "</script>";

        echo $boolean;

        if($boolean = 'true'){
            echo "<p>boolean value true</p>";   
        } else {
            echo "<p>boolean value false</p>";  
        }
    ?>

</body>

4

5 回答 5

4
if($boolean = 'true'){ <-- this line
        echo "<p>boolean value true</p>";   
    } else {
        echo "<p>boolean value false</p>";  
    }

您不是将 $boolean 变量与“true”进行比较,而是将值赋值为“true”。

试试两个等号。

我什至不确定你在做什么是可能的。但是等号肯定是个问题。

于 2013-08-07T13:08:56.697 回答
4

就像说的那样,您不是在比较,而是在分配,因为语句=中只有一个 equal sing。if

除此之外,您不能直接从 PHP 读取 localStorage。所以即使你有一个 double equals==来比较,那么它仍然会 outout boolean value true

那是因为你放了一个stringinside $Boolean

$boolean = "<script type='text/javascript'>document.write(localStorage.save);</script?";

您没有评估任何这样的 JavaScript 代码。

当 PHP 变量包含某些内容时,无论它是字符串还是数字等。它总是会trueif语句中计算。除非该值为false,0null

要比较真正的布尔值,您必须使用显式比较。你用三个等号来做到这一点===

if ( $someBool === true )
{ // do stuff }

但是不,你不能直接从 JS 获取 localStorage 值到 PHP。您需要一个 Ajax 调用才能将其传递回 PHP。我认为这就是你最终想要做的。

于 2013-08-07T13:15:40.710 回答
0

我想这是if你做的错字

if($boolean == 'true'){
    ....
}
于 2013-08-07T13:15:15.290 回答
0

一个=是分配,比较是要么==要么===

此示例显示“Hello”:

<?php
function getData()
{
    return 'Hello';
}

if ($data = getData()) {
    echo $data;
}

此示例显示“23”:

<?php
function getData()
{
    return 'Hello';
}

$data = getData()

if ($data === 'hello') {
    echo 1;
}

if ($data == 'hello') {
    echo 2;
}

if ($data === 'Hello') {
    echo 3;
}
于 2013-08-07T13:17:22.880 回答
0

Using=只会为 $boolean 分配该值,并且会返回 true,因为它不是false,0null. 尝试使用=====。:)

于 2017-01-24T21:36:52.393 回答