对于我的Web应用程序我需要在php中使用javascript变量的整数值,以便我可以从mysql.so中的数据库中提取数据作为测试我试过这个:
<script>var p1=7123;</script>
<?php
$a= "<script>document.write(p1);</script>";
echo $a;
$b=$a;
$b=intval($a);
if(is_int($b)){echo "numeric ";}
echo "$b ";
?>
我认为$ a将是数字字符串。所以我将它转换为整数并将其存储在$ b中但是然后$ b的值为零。但是下面的工作原理我猜这个问题与document.write()有关。这是问题吗?
<?php
$a= "7123";
echo $a;
$b=$a;
$b=intval($a);
if(is_int($b)){echo "numeric ";}
echo "$b ";
?>
答案 0 :(得分:0)
PHP代码在服务器上运行,此时无论您对输出缓冲区的回显是什么,都只被视为文本。直到页面在浏览器中加载JavaScript代码才会执行。
因此,您无法从JavaScript获取值到PHP变量,它们会在不同的地方在不同的时间运行。 PHP代码在服务器上运行,完成后,页面将被发送到运行JavaScript的浏览器。当JavaScript启动时,PHP代码已经完成。
变量$a
包含字符串"<script>document.write(p1);</script>"
,写出来不会在服务器上执行该脚本。当您尝试将其转换为整数时,该变量仍包含该脚本。
答案 1 :(得分:0)
如THIS ANSWER &#34中所述; PHP会在大多数情况下强制为您提供类型&#34; ,但如果您想明确尝试:
<?php
$a = "7123";
$aNum = (int)$a;
?>
答案 2 :(得分:0)
这非常重要...... PHP在服务器上执行。然后,服务器将标签外的所有内容与任何回显和打印结果一起发送到服务器。然后,浏览器会解释服务器发送给它的所有内容。 执行JavaScript时的情况。
让我们来看看你的代码......
<script>var p1=7123;</script>
服务器立即将其吐出到浏览器。没有处理。
<?php
参与PHP引擎。从这里开始,代码将被处理为PHP。
$a= "<script>document.write(p1);</script>";
现在,在PHP中,$a
变量包含一个字符串。它字面上包含&#34;&lt; script&gt; document.write(p1);&lt; / script&gt;&#34;。
echo $a;
将$ a的值打印(或#34;回声&#34;)到浏览器。 PHP并不关心它是什么。它只是以快乐的方式发送它。
$b=$a;
$b
现在是`$ a&#39;的副本。它的值为&#34;&lt; script&gt; document.write(p1);&lt; / script&gt;&#34;,这只是一个字符串。
$b=intval($a);
现在,我们已经抛弃了$b
的旧值,并将其替换为整数值$a
。根据{{3}},任何不是数字的字符串都将导致0(零)。
if(is_int($b)){echo "numeric ";}
那应该是两三行,但我们会选择它。 $b
绝对是一个数字,因为我们只是将它指定为0.所以,我们回应&#34;数字&#34;到浏览器。
echo "$b ";
简单。我们只是回显$b
,我们知道它是0。
?>
脱离PHP引擎。在此之后不会处理PHP。在此之后发生的任何事情都可以直接发送到浏览器,就好像它是在echo语句中一样。
让我们看看浏览器的内容(添加了一些换行符以使其更具可读性)......
<script>var p1=7123;</script>
<script>document.write(p1);</script>
numeric
0
浏览器接受,执行标记内的任何内容,并显示其他任何内容。请注意,这与PHP的做法非常相似。
因此,您在浏览器中看到的内容类似于......
7123
numeric
0
再次,我添加了换行符,以便您可以看到一切如何匹配。实际上你会看到像7123numeric 0
我希望有所帮助。了解代码流程至关重要。服务器代码仅在服务器上执行。客户端(浏览器)代码仅在客户端上执行。 当您编写PHP时,您实际上是在编写编写客户端代码的服务器代码。