我有一个接收 $_POST 的函数(您的内容:xml 格式的变量“xml”)。
我试过这个:
function call($_POST) {
$xml = $_POST['xml'];
$doc = simplexml_load_string($xml);
}
但是当我尝试在文件中写入最终变量时,什么都没有写入。(而且我已经尝试将帖子视为一个数组,但也不起作用)。
谢谢,
我认为通过声明$_POST
为函数的输入参数,您已经在本地范围内重新定义了它并丢失了全局数据,因为您尝试重新评估它($_POST
是一个超全局的)。对于你所做的,一些很好的现有问答材料是:
即使那些更老,他们提供的关于该主题的信息在 PHP 中仍然有效,因为这些超全局变量多年来并没有改变含义。
然而,在所有当前稳定的 PHP 版本(即 PHP 5.4 及更高版本)中,您的代码会产生致命错误(80+ PHP 版本中的在线演示):
致命错误:无法重新分配自动全局变量 _POST
这可能解释您没有得到任何输出。见什么也看不见。该页面是空的和白色的。(也称为白页或死屏)在参考 - 这个错误在 PHP 中意味着什么?. 您可能看不到任何错误消息,因为您没有显示它或没有查看日志文件,请参阅如何在 PHP 中获取有用的错误消息?.
所以,你可以做什么?在了解 PHP 错误处理的基础知识之后——我建议你启用错误日志并找到错误日志以熟悉它——你需要按照上面链接的两个参考问题中的概述更改代码。
要么摆脱$_POST
作为函数的输入,要么将名称更改为其他名称,例如$postData
.
function call(array $postData)
{
$xml = $postData['xml'];
$doc = simplexml_load_string($xml);
}
只需调用该函数:
call($_POST);
或者,如果您只使用该数组传递一些小参数,请将它们写出来:
function call($xmlString)
{
$doc = simplexml_load_string($xmlString);
}
用法:
call($_POST['xml']);
这将允许您使用具有相同代码的不同表单名称。非常有用,因为您不会将事物过于紧密地捆绑在一起,而是留下一些摆动的空间。
上帝知道重新分配$_POST
作为函数参数名称会如何搞砸事情。尝试将您的代码更改为:
function call($xmlstr) {
$doc = simplexml_load_string($xmlstr);
// should probably be a return here, but I'm guessing
// your function does more than just parse XML...
}
call($_POST['xml']);
或者简单地说:
function call() {
$doc = simplexml_load_string($_POST['xml']);
}
call();