【问题标题】:PHP json not showing all related valuesPHP json未显示所有相关值
【发布时间】:2015-07-22 06:38:40
【问题描述】:

您好,我有这个用于打印 json 的 php 代码

<?php

include('databaseconnect.php');

$sql = "SELECT product_id,product_name FROM products WHERE product_id='1'";
$result = $conn->query($sql);

$sql2 = "SELECT GROUP_CONCAT(ss.Name,':',sv.value_s ) as Specifications FROM specifications ss, specification_value sv WHERE sv.specification_ID = ss.specification_ID AND sv.product_id =  '1'";
$fetch = $conn->query($sql2);

$sql3 = "select GROUP_CONCAT(v.name,':',vv.value) as variants from variant v,variant_value vv where v.variant_id=vv.variant_id and product_id='1'";
$fetch1 = $conn->query($sql3);


$json['products'] = array();

while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){

    $json['products'] = $row;

  }

$json['products']['specification'] = array();

while ($row = mysqli_fetch_assoc($fetch)){

    $specification_array  = explode(',', $row["Specifications"]);
    $speci_array = array();
    foreach($specification_array as $spec){
        $spec = explode(':',$spec);
        $speci_array[$spec[0]] = $spec[1];
    }
    $json['products']['specification'] = $speci_array;

    //array_push($json['products'],$row_temp);
   }

$json['products']['specification']['variants'] = array();

while ($row = mysqli_fetch_assoc($fetch1)){

    $variants_array  = explode(',', $row["variants"]);
    $vari_array = array();
    foreach($variants_array as $var){
        $var = explode(':',$var);
        $vari_array[$var[0]] = $var[1];
    }
    $json['products']['specification']['variants'] = $vari_array;

    //array_push($json['products'],$row_temp);
   }


echo Json_encode($json);

?>

这个的输出是

{
    "products": {
        "product_id": "1",
        "product_name": "Face Wash",
        "specification": {
            "brand": "Python",
            "product_Description": "very good",
            "variants": {
                "size": "long"
            }
        }
    }
}

但在这方面,我对变体还有一个价值,即 "size":"small" 并没有出现。 抱歉英语不好,请在回答之前询问我的任何澄清

我想要的输出

{
    "products": {
        "product_id": "1",
        "product_name": "Face Wash",
        "specification": {
            "brand": "Python",
            "product_Description": "very good",
            "variants": {
                "size": "small"
                "size": "long"
            }
        }
    }
}

【问题讨论】:

  • 你可以做 '$vari_array[$var[0]][] = $var[1];'现在大小是多维数组。
  • 谢谢它解决了我的问题:)

标签: php json mysqli


【解决方案1】:

您不能将相同的密钥 size 添加两次。以前的密钥会被以后覆盖。

【讨论】:

    【解决方案2】:

    由于您再次重复键 size,因此值将被覆盖。传递属于数组中相同 Key 的所有必需值。

    【讨论】:

      【解决方案3】:

      是的,您不能使用相同的键名.. 你可以喜欢

      {
          "products": {
              "product_id": "1",
              "product_name": "Face Wash",
              "specification": {
                  "brand": "Python",
                  "product_Description": "very good",
                  "variants": [{"size": "small"},{"size": "long"}]
              }
          }
      }
      

      【讨论】:

        【解决方案4】:

        你可以做 '$vari_array[$var[0]][] = $var[1];'现在大小是多维数组。 如cmets中https://stackoverflow.com/users/1993125/wisdmlabs所示

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-13
          • 2018-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多