php json多维数组语法

时间:2016-02-28 02:00:33

标签: php arrays json multidimensional-array

我在PHP中创建的JSON有问题;我在sql查询的while循环中创建数组。 $featuresCSV是逗号分隔的字符串,如"1,3,4"。在JSON中我需要它最终像feature-1: 1,feature-2: 1,feature-3: 1 1表示true我的前端程序中的复选框。

while ($stmt2->fetch()) {

  $features = array();
  $featuresTmp = explode(',', $featuresCSV, -1);

  foreach ($featuresTmp as &$featureItem) {
    $features[] = array("feature-" . $featureItem => 1);
  }

  $items[] = array('price' => $price, 'image' => $image, 'features' => $features);
}
...
json_encode($output);

JSON最终看起来像这样:

{"price":8900,
"image":"4d3f22fe-9f1a-4a7e-a564-993c821b2279.jpg",
"features":[{"feature-1":1},{"feature-2":1}]}

但我需要它看起来像这样:

{"price":8900,
"image":"4d3f22fe-9f1a-4a7e-a564-993c821b2279.jpg",
"features":[{"feature-1":1,"feature-2":1}]}

注意feature-1feature-2在第二个中没有用括号分隔。

2 个答案:

答案 0 :(得分:2)

您需要在“feature-1”和“feature-2”处分配元素。

foreach ($featuresTmp as &$featureItem) {
   $features["feature-" . $featureItem] = 1;
}

语法$feature[] = ...用于附加到数组的末尾。

答案 1 :(得分:0)

这里你去了

while ($stmt2->fetch()) {

$features = array();
$featuresTmp = explode(',', $featuresCSV, -1);


foreach ($featuresTmp as &$featureItem) {
$features["feature-$featureItem"] = 1;
}

$items[] = array('price' => $price, 'image' => $image, 'features' => $features);
}
...
json_encode($output);