将经典的asp函数转换为php:循环遍历request.form

时间:2013-06-19 04:49:10

标签: php forms post asp-classic

我对php很新。我正在尝试将经典的asp vbscript函数转换为php。它循环遍历request.form值并生成一个字符串。我找到this article关于循环$_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':}

有人能指出我正确的方向吗? 提前谢谢。

1 个答案:

答案 0 :(得分: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