0

私の主な質問は、なぜ以下のコードが出力されるのかということです:

false

boolean value true

変数の「boolean」値もfalseであると思います

一部のデータを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ステートメント内の単一の等号のために割り当てています。

次に、PHP から localStorage を直接読み取ることはできません。したがって、==比較する double equals がある場合でも、 outout になりboolean value trueます。

それはあなたが入れたからですstringinside $Boolean

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

そのような JavaScript コードを評価しているわけではありません。

PHP 変数に何かが含まれている場合、それが文字列であろうと数値であろうと、常にステートメントtrue内で評価されます。値が、またはifでない限り。false0null

実際のブール値を比較するには、明示的な比較を使用する必要があります。3 つの等号でそれを行います===

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

ただし、localStorage の値を JS から PHP に直接取得することはできません。PHP に戻すには、Ajax 呼び出しが必要です。そして、それがあなたが最終的にやろうとしていることだと思います。

于 2013-08-07T13:15:40.710 に答える
0

私はそれがifあなたが作るのタイプミスだと思います

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

1つ=は割り当てることで、比較はまたはのいずれ=====です。

この例では、「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 に答える