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 回答