gpt4 book ai didi

javascript - 如何比较两个包含 "echo"语句的 php 函数而不显示 "echo"?

转载 作者:行者123 更新时间:2023-11-28 11:00:38 25 4
gpt4 key购买 nike

我的 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>";
//$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 测试同一文件中 javascript 变量的值而不刷新页面。我知道有一些方法可以通过多个文件(ajax、json...)将 js 变量传递给 php,但我很好奇,想知道是否可行。确实如此,但我不满意,因为 PHP 实际执行了这些函数。

这是输出:

truetrue

WOW! It works!

测试的实际情况似乎是“this function echoes true”。

现在回答问题:

  1. 如何防止回显 true
  2. 有没有办法让 PHP 测试 myFuncfoo 而无需
    实际执行这些功能?
  3. 当 javascript 随页面一起加载时,有没有办法用户在 PHP 脚本读取 myvar 之前修改它?

最佳答案

有人发布了一个不同的问题,其中包含涉及缓冲区操作的解决方案,此处:How do I capture PHP output into a variable?

我只是想说,如果它们是自定义函数,从长远来看,进行一些小的重构可能会更好地为您服务。而不是:

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 传递给专门用于指定是否要回显的参数,但您不想回显,则表明代码中存在更重要的结构问题。

关于javascript - 如何比较两个包含 "echo"语句的 php 函数而不显示 "echo"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com