php提取功能显示警告

时间:2012-11-29 05:14:52

标签: php extract

当我使用提取时,它会显示一些警告,例如'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);

1 个答案:

答案 0 :(得分:0)

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

  2. 您需要确保$data是一个关联数组。表示其中的EACH元素具有string key且该键适合变量命名规则(例如,不以数字开头)。如果它是数组,而不是关联数组,则会产生此错误。

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

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

    这将使用data_添加每个密钥。也适用于非关联数组,使$data_0$data_1等变量

    有关详细信息,请参阅official documentation