-4

コード:

if( 4 > 1 ) {
    alert('ok');
    <?php $mode = true;?>
} else {
    alert('not-ok');
    <?php $mode = false;?>      
}
var_dump($mode);

これはOKを警告しますが、var_damp()ショーbool(false)

var_dump が $mode が false であることを示しているのはなぜですか?

4

5 に答える 5

3

サーバー側のコードとクライアント側のコードを混同しています。PHP はブラウザーで引き続き解釈されません。何かがブラウザー (JavaScript コードを解釈する) に到達するまでに、PHP は処理されて完了します。

したがって、本質的に PHP で行っていることは次のとおりです。

$mode = true;
$mode = false;
var_dump($mode);

当然、表示されfalseます。次に、実行が完了したら、これをブラウザーにレンダリングします。

if(4>1){
    alert('ok');
} else {
    alert('not-ok');
}

当然のことながら、これはalert('ok').

基本的に、サーバー側のコードとクライアント側のコードは、2 つのまったく異なるアプリケーション コンテキストと考えることができます。確かに、彼らは一種です。サーバー側アプリケーションはページを返すだけで、ページに何があるか、ページに何が起こるかは気にしません。クライアント側アプリケーションは、ブラウザーとその中のコード (この場合は JavaScript) にレンダリングされるものです。サーバーによってどのように生成されたか、またはサーバー側で使用された言語 (PHP、ASP、Java など) は気にせず、ブラウザーで処理を行うだけです。

于 2013-03-01T13:07:19.127 に答える
1

ページがブラウザに送信される前に、PHPコードがサーバー上で実行されます。この時点で、コード チャンク:$mode = true;との両方$mode = false;が実行され、 の最終値$modeが false になるため、var_dump($mode)が出力されますbool|(false)。ブラウザに送信されるページには、次のコードが含まれます。

if(4>1){

        alert('ok');


    } else {
        alert('not-ok');

    }

PHP チャンクは何も出力しなかったため、何も表示されません。ブラウザはこのコードを実行し、ウィンドウを表示しますok

于 2013-03-01T13:08:00.410 に答える
0

このコードを使用して結果を取得します..

<?php

echo "<script type='text/javascript'>";

if(4>1){

    echo "alert('ok')";
    $mode = true; 

}

else {
    echo "alert('ok')";
    $mode = false; 
}

echo "</script>";

var_dump ($mode);

?>

PHPスクリプト内にJavaScriptを書くことができます..

于 2013-03-01T13:26:01.020 に答える
0

PHP - サーバー側 - ブラウザも Javascript も参照しません。

したがって、指定されたコードは、PHP が処理された後にブラウザーに配信されます。

于 2013-03-01T13:07:08.557 に答える
0

PHPがページのレンダリングを完了した後は、新しいphp変数を割り当てることができないためです。このようなことをしたい場合は、おそらく AJAX を使用する必要があります。

于 2013-03-01T13:08:59.363 に答える