0

私はphpにかなり慣れていません。古典的なasp vbscript関数をphpに変換しようとしています。値をループしてrequest.form文字列を生成しています。のループに関するこの記事を見つけました$_REQUEST

これは vb 関数です。

obj = "{"
  for each prod in request.Form
    if prod <> "checkout" then obj = obj & "'" & prod & "':" & request.Form(prod) & ","
  next
obj = left(obj, len(obj)-1) & "}"   'take out last comma

これは、フォーム ポストの典型的なデータです。

checkout: true
2012ORGANIC500ML: 1

次の文字列を生成します。

{'2012ORGANIC500ML':1}

PHPでの私の試みはこれです:

$obj = "{";
  foreach ($_REQUEST as $prod) {
    if ($prod != "checkout") { $obj .= "'" . $prod . "':" . $_REQUEST[$prod] . ","; };
  };
$obj .= substr($obj, 0, -1) . "}";

次の誤った文字列を返します。

{'true':,'1':,{'true':,'1':}

誰かが私を正しい方向に向けることができますか? 前もって感謝します。

4

1 に答える 1

1

foreach($_REQUEST as $prod) を実行すると、キーではなくループ内の値のみが取得されます。だからこれを試してください:

  foreach ($_REQUEST as $key => $val) {
    if ($key != "checkout") { $obj .= "'" . $key . "':" . $val . ","; };
  };

ところで... json 形式のデータが必要な場合は、単純に json_encode($data) を実行できます。

$data = $_REQUEST;
$checkout = $data['checkout'];  // get your checkout var
unset($data['checkout']);       // remove checkout from data
$obj = json_encode($data);      // json encode your data to $obj
于 2013-06-19T05:05:52.407 に答える