PHP json没有显示所有相关的值


PHP json not showing all related values

你好,我有这个php代码打印json

<?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"
            }
        }
    }
}

不能添加相同的键size两次。

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

是的,你不能使用相同的键名。你可以输入

{
    "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];'现在大小是多维数组。如注释

中的https://stackoverflow.com/users/1993125/wisdmlabs所示