Javascript 如何比较包含“echo”语句的两个php函数,而不显示“echo”?
我的PHP:Javascript 如何比较包含“echo”语句的两个php函数,而不显示“echo”?,javascript,php,Javascript,Php,我的PHP: <?php function myFunc($echo) { //this js will print display the value of "myvar" $myvar = "<script type='text/javascript'> var myvar= true; document.write(myvar); </script&
<?php
function myFunc($echo) {
//this js will print display the value of "myvar"
$myvar = "<script type='text/javascript'>
var myvar= true;
document.write(myvar);
</script>";
//$myvar = "aDuck";
if ($echo) {
echo $myvar;
}
}
function foo($echo) {
if ($echo) {
//this echoes "true", which is the value of js "myvar"
echo "true";
}
}
if (myFunc(true) == foo(true)) {
echo "<br> WOW! it works!";
}
?>
被测试的实际情况似乎是,此函数与实际情况相符
那么现在来回答问题:
我如何防止这一点与事实相呼应?
有没有一种方法可以让PHP测试myFunc和foo而不用
实际执行这些功能?
当javascript与页面一起加载时,是否有方法
在PHP脚本读取myvar之前,用户是否要修改它?
您应该将echo逻辑拉到这样的函数之外 函数myFunc{ //此js将打印并显示myvar的值 $myvar= var-myvar=true; document.writemyvar; ; 返回$myvar; } //在这里,您是否使用echo if$条件{ echo-myFunc; }
PHP在服务器上运行,为客户端运行的web浏览器生成网页。客户机获取此输出并对其进行处理。对于web浏览器,它显示HTML并执行JavaScript
在您的代码中,$myvar包含一个以开头的字符串,有人发布了一个不同的问题,其中包含一个涉及缓冲区操作的解决方案,如下所示: 我只是想说,如果它们是自定义函数,从长远来看,稍微进行一点重构可能会更好。而不是:
function foo() {
echo 'blah';
}
将其更改为:
function foo() {
echo bar();
}
function bar() {
return 'blah';
}
这样,对foo的现有调用保持不变,但如果您只需要值,可以调用bar
具体到你的问题:
<?php
function myFunc( ...$params ) {
$x = myFunc2( ...$params );
if( $x !== false ) echo $x;
}
function foo( ...$params ) {
$x = foo2( ...$params );
if( $x !== false ) echo $x;
}
function myFunc2($echo) {
//this js will print display the value of "myvar"
$myvar = "<script type='text/javascript'>
var myvar= true;
document.write(myvar);
</script>";
//$myvar = "aDuck";
if ($echo) {
return $myvar;
} else {
return false;
}
}
function foo2($echo) {
if ($echo) {
//this echoes "true", which is the value of js "myvar"
return "true";
} else {
return false;
}
}
if (myFunc2(true) == foo2(true)) {
echo "<br> WOW! it works!";
}
?>
然而。。。如果将True传递给一个参数,该参数专门用于指定是否要回显,但不想回显,则表明代码中存在更为严重的结构问题。使用return而不是echo。您不比较函数。您正在比较函数返回的内容。这两种情况下都是空的。您无法阻止echoig true中的函数,因为它们就是这样做的。没有办法。“不,你不能。”弗兰兹格莱奇曼:你完全正确。这完全是胡说八道。谢谢你的回答!那么,我有没有办法测试的输出是否与相同?可能有用。哦,是的,它在防御上是有用的!谢谢你@NigelRen!这里的问题是它中断了对myFunc的所有现有调用
<?php
function myFunc( ...$params ) {
$x = myFunc2( ...$params );
if( $x !== false ) echo $x;
}
function foo( ...$params ) {
$x = foo2( ...$params );
if( $x !== false ) echo $x;
}
function myFunc2($echo) {
//this js will print display the value of "myvar"
$myvar = "<script type='text/javascript'>
var myvar= true;
document.write(myvar);
</script>";
//$myvar = "aDuck";
if ($echo) {
return $myvar;
} else {
return false;
}
}
function foo2($echo) {
if ($echo) {
//this echoes "true", which is the value of js "myvar"
return "true";
} else {
return false;
}
}
if (myFunc2(true) == foo2(true)) {
echo "<br> WOW! it works!";
}
?>