代码:
if( 4 > 1 ) {
alert('ok');
<?php $mode = true;?>
} else {
alert('not-ok');
<?php $mode = false;?>
}
var_dump($mode);
此警报可以,但var_damp()
显示bool(false)
为什么var_dump显示$ mode为false?
答案 0 :(得分:3)
您将服务器端代码与客户端代码混淆。 PHP不会继续在浏览器中解释。当任何东西进入浏览器(解释JavaScript代码)时,PHP就会被处理完毕。
基本上你在PHP中所做的就是:
$mode = true;
$mode = false;
var_dump($mode);
自然会显示false
。然后,在完成执行后,您将其呈现给浏览器:
if(4>1){
alert('ok');
} else {
alert('not-ok');
}
当然,alert('ok')
。
您基本上可以将服务器端代码和客户端代码视为两个完全不同的应用程序上下文。的确,他们就是这样。服务器端应用程序只是返回一个页面,它不关心页面上的内容或页面发生了什么。客户端应用程序是向浏览器及其中的任何代码呈现的内容(在本例中为JavaScript)。它不关心它是如何由服务器生成的,甚至不关心使用什么服务器端语言(PHP,ASP,Java等),它只是在浏览器中完成它。
答案 1 :(得分:1)
在将页面发送到浏览器之前,在服务器上执行PHP代码。此时,两个代码块:$mode = true;
和$mode = false;
都将被执行,$mode
的最终值将为false,因此var_dump($mode)
将打印bool|(false)
。发送到浏览器的页面将包含以下代码:
if(4>1){
alert('ok');
} else {
alert('not-ok');
}
你的PHP块没有打印任何东西,所以他们只会转向任何东西。浏览器将执行此代码并显示其中包含ok
的窗口。
答案 2 :(得分:0)
PHP - 服务器端 - 浏览器没有查看,也没有Javascript。
因此,在处理完PHP后,给出的代码将被传递给浏览器。
答案 3 :(得分:0)
因为在完成php渲染页面后你无法分配任何新的php变量。如果你想做这样的事情,你可能不得不使用AJAX。
答案 4 :(得分: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 ..