【发布时间】:2014-10-22 11:47:10
【问题描述】:
我正在尝试从 mysql 获取 Google Line Chart API: 的以下输出
[["product","diameter","width"],["Product 1","2","4"],["Product 2","4","8"]]
我设置了几个输入复选框,通过$_POST["info"] 将字段名称(例如宽度、直径)发送到数据库并从这些字段中检索值。下面是从 mysql 生成数据的部分:
$result = $users->fetchAll();
$comma = "";
$data="";
$data[0] = array_merge(array(product),$info);
$i = 1;
foreach ($result as $r)
{
foreach($_POST["info"] as $p)
{
$d .= $comma.$r[$p]; // trying to get "$r["width"],$r["diameter"]"
}
$comma = ",";
$data[$i] = array($r["name"], $d);
$i++;
}
echo json_encode($data);
我想要的输出应该是这样的:
[["product","diameter","width"],["Product 1","2","4"],["Product 2","4","8"]]
但是该代码会产生这样的重复结果
[["product","diameter","width"],["Product 1","24"],["Product 2","24,4,8"]]
我想我不应该使用嵌套的 foreach 来循环 $_POST。谁能告诉我如何解决这个问题?
完整的 PHP 代码:
$info = $_POST["info"]; // It contains an array with values like width,diameter,thickness etc...
$comma = "";
foreach($info as $in)
{
$field .= "".$comma."b.".$in."";
$comma = ",";
}
$sql = "
SELECT {$field},a.user_id,a.name
FROM `product_detail` a INNER JOIN
`attr` b ON a.model = b.model
WHERE a.user_id = ?
GROUP BY a.model
";
$users = $dbh->prepare($sql);
$users->bindValue(1, $_SESSION["user_id"]);
$users->execute();
$result = $users->fetchAll();
$comma = "";
$data="";
$i = 1;
$data[0] = array_merge(array(product),$info);
foreach ($result as $r)
{
foreach($_POST["info"] as $p)
{
$d .= $comma.$r[$p];
}
$comma = ",";
$data[$i] = array($r["name"], $d);
$i++;
}
echo json_encode($data);
$_POST["info"] 内容:
Array
(
[0] => diameter
[1] => width
)
【问题讨论】:
-
请把
$_POST["info"];和$result的内容贴出来——否则很难预测会发生什么。 -
@Hirnhamster,抱歉,请稍候,有人编辑了我的 $POST 内容