我的主要问题是,为什么以下代码打印出来:
false
boolean value true
我希望变量“boolean”值也是假的
我想在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>
答案 0 :(得分:5)
if($boolean = 'true'){ <-- this line
echo "<p>boolean value true</p>";
} else {
echo "<p>boolean value false</p>";
}
您没有将$ boolean变量与'true'进行比较,而是将值分配为'true'。
尝试两个等号。
我甚至不确定你在做什么是可能的。但等号肯定是个问题。
答案 1 :(得分:4)
就像上面说的那样,你不是在比较,而是因为=
声明中的单一同等对象if
而进行分配。
除此之外,您无法直接从PHP读取localStorage。因此,即使你有一个双等于==
进行比较,它仍然会超出boolean value true
。
这是因为您在string
内放置了$Boolean
:
$boolean = "<script type='text/javascript'>document.write(localStorage.save);</script?";
您没有评估任何类似的JavaScript代码。
当一个PHP变量包含某些东西时,它就是一个字符串或数字等。它总是在true
语句中评估为if
。除非值为false
,0
或null
。
要比较实际布尔值,您必须使用显式比较。你用三个等号===
来做到这一点。
if ( $someBool === true )
{ // do stuff }
但不,你不能直接从JS到PHP获取localStorage值。您需要一个Ajax调用将它传递回PHP。而且我认为这是你最终要做的事情。
答案 2 :(得分:0)
我想这是if
你做的
if($boolean == 'true'){
....
}
答案 3 :(得分: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;
}
答案 4 :(得分:0)
使用Scanner
只会为该值分配$ boolean并返回true,因为它不是=
,false
或0
。尝试使用null
或==
。 :)