0

当我使用提取时,它会显示一些警告,例如“PHP 警告:提取() [function.extract]:第一个参数应该是一个数组”

以下是代码

$HTTP_RAW_POST_DATA = file_get_contents('php://input');

ob_start();

global $mmb_core;
$data = unserialize(base64_decode($HTTP_RAW_POST_DATA));
$data =array($data);
$num  = extract($data);
4

1 回答 1

0
  1. 首先,你要么不需要 line$data =array($data);要么不需要unserialize. 哪一个取决于输入的格式。如果输入是序列化数组,那么只有它就足够了unserialize

  2. 您需要确保这$data是一个关联数组。意味着其中的每个元素都有一个string key并且该键符合变量命名规则(例如,不以数字开头)。如果是数组,而不是关联数组,就会产生这个错误。

此函数还验证这些键是否会覆盖已定义的变量。所以你需要使用正确的密钥。我会这样使用它

if(is_array($data)){
  $num = extract($data, EXTR_PREFIX_ALL, "data_");
}

这将在每个键前面加上data_. 也适用于非关联数组制作变量$data_0$data_1

更多细节最好参考官方文档

于 2012-11-29T05:33:31.283 回答