0

我有一个接收 $_POST 的函数(您的内容:xml 格式的变量“xml”)。

我试过这个:

function call($_POST) {    
    $xml = $_POST['xml'];    
    $doc = simplexml_load_string($xml); 
}

但是当我尝试在文件中写入最终变量时,什么都没有写入。(而且我已经尝试将帖子视为一个数组,但也不起作用)。

谢谢,

4

2 回答 2

1

我认为通过声明$_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']);

这将允许您使用具有相同代码的不同表单名称。非常有用,因为您不会将事物过于紧密地捆绑在一起,而是留下一些摆动的空间。

于 2013-07-02T15:17:41.563 回答
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();
于 2013-07-02T15:18:16.097 回答