我有一个接收$ _POST的函数(你的内容:xml格式的变量'xml')。
我试过这个:
function call($_POST) {
$xml = $_POST['xml'];
$doc = simplexml_load_string($xml);
}
但是当我尝试在文件中写入最终变量时,没有写入任何内容。 (我已经尝试将帖子视为数组,但也不起作用)。
谢谢,
答案 0 :(得分:1)
我认为通过将$_POST
声明为函数的输入参数,您已在本地范围内重新定义它并丢失全局数据,因为您尝试重新分配它($_POST
is a superglobal)。对于你所做的,一些现有的Q& A材料是:
即使那些年龄较大,他们提供的有关该主题的信息在PHP中仍然有效,因为这些 superglobals 多年来没有改变含义。
但是在所有当前稳定的PHP版本(即PHP 5.4及更高版本)中,您的代码会产生致命错误(Online Demo in 80+ PHP Versions):
致命错误:无法重新分配自动全局变量_POST
这可能会解释您没有获得任何输出。请参阅Nothing is seen. The page is empty and white. (also known as White Page or Screen Of Death)中的Reference - What does this error mean in PHP?。您可能看不到任何错误消息,因为您没有显示它,或者您没有查看日志文件,请参阅How to get useful error messages in 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']);
这将允许您使用具有相同代码的不同表单名称。非常有用,因为你不会把事情捆得太紧,但会留下一些扭动的空间。
答案 1 :(得分:1)
天知道如何重新分配$_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();