将经典asp函数转换为php:通过request.form循环


Translating classic asp function to php: looping through request.form

我对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

这是post:

表单中的典型数据
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':}
谁能给我指个正确的方向?

如果您执行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