コード:
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 であることを示しているのはなぜですか?
コード:
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 であることを示しているのはなぜですか?
サーバー側のコードとクライアント側のコードを混同しています。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 など) は気にせず、ブラウザーで処理を行うだけです。
ページがブラウザに送信される前に、PHPコードがサーバー上で実行されます。この時点で、コード チャンク:$mode = true;
との両方$mode = false;
が実行され、 の最終値$mode
が false になるため、var_dump($mode)
が出力されますbool|(false)
。ブラウザに送信されるページには、次のコードが含まれます。
if(4>1){
alert('ok');
} else {
alert('not-ok');
}
PHP チャンクは何も出力しなかったため、何も表示されません。ブラウザはこのコードを実行し、ウィンドウを表示しますok
。
このコードを使用して結果を取得します..
<?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を書くことができます..
PHP - サーバー側 - ブラウザも Javascript も参照しません。
したがって、指定されたコードは、PHP が処理された後にブラウザーに配信されます。
PHPがページのレンダリングを完了した後は、新しいphp変数を割り当てることができないためです。このようなことをしたい場合は、おそらく AJAX を使用する必要があります。