当我使用提取时,它会显示一些警告,例如'PHP警告:extract()[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);
答案 0 :(得分:0)
首先,您不需要行$data =array($data);
或不需要unserialize
。哪一个取决于输入的格式。如果输入是序列化数组,那么仅unserialize
就足够了。
您需要确保$data
是一个关联数组。表示其中的EACH元素具有string key
且该键适合变量命名规则(例如,不以数字开头)。如果它是数组,而不是关联数组,则会产生此错误。
此函数还验证这些键是否会覆盖已定义的变量。所以你需要使用正确的密钥。我会这样用它
if(is_array($data)){
$num = extract($data, EXTR_PREFIX_ALL, "data_");
}
这将使用data_
添加每个密钥。也适用于非关联数组,使$data_0
,$data_1
等变量
有关详细信息,请参阅official documentation