0

抽出を使用しているときに、「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);
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 に答える