PHP开关/案例json_encode

Sup*_*nja 0 php json

我很困惑这个.在使用下面的开关/案例时,如果我回答案例1,我的结果如下:

Metal Cover (300)
Plexi (300)
Flat Cover (200)
Paper Cover (250)
Run Code Online (Sandbox Code Playgroud)

当我回显json_encode时,它返回以下内容:

{"300":"Plexi (300)","200":"Flat Cover (200)","250":"Paper Cover (250)"}
Run Code Online (Sandbox Code Playgroud)

为什么我会丢失我的一行?- 谢谢

$type = 'cover';
    $stt = 1;
    $productId = 81;

        $results = array();
        switch ($type) {
        case "cover":
            $query = mysql_query("SELECT * 
                                    FROM albumcover 
                                    WHERE productId = '{$productId}'
                                ");
            $results[0] ="None";
            switch ($stt){
                case 1:
                    while($row = mysql_fetch_array($query)){
                        echo $results[$row['price2']] = $row['coverupgrade'] . ' (' . $row['price2'] . ')<br>';
                    }
                break;
                case 2:
                    while($row = mysql_fetch_array($query)){
                        $results[$row['price3']] = $row['coverupgrade'] .' (' . $row['price3'] . ')';
                    }
                    break;
                case 3:
                    while($row = mysql_fetch_array($query)){
                        $results[$row['price4']] = $row['coverupgrade'] .' (' . $row['price4'] . ')';
                    }
                    break;
                default :
                    while($row = mysql_fetch_array($query)){
                        $results[$row['price1']] = $row['coverupgrade'].' ('.$row['price1'].')';
                    }
                    break;
            }
            echo json_encode($results);
Run Code Online (Sandbox Code Playgroud)

kni*_*ttl 9

金属盖和Plexi具有相同的键(300).键必须是唯一的,因此后者会覆盖第一个键.

如果要为单个键存储多个值,则必须使用另一个数组(不确定这是否是您想要的):

$results[$row['priceX']][] = $row['coverupgrade'].' ('.$row['priceX'].')';
Run Code Online (Sandbox Code Playgroud)

JSON编码它看起来像这样:

{
  "300":["Metal Cover (300)", "Plexi (300)"],
  "200":["Flat Cover (200)"],
  "250":["Paper Cover (250)"]
}
Run Code Online (Sandbox Code Playgroud)