PHP开关/case json_编码
这一点我很困惑。使用下面的开关/案例时,如果我回显案例1,我的结果如下:PHP开关/case json_编码,php,json,Php,Json,这一点我很困惑。使用下面的开关/案例时,如果我回显案例1,我的结果如下: Metal Cover (300) Plexi (300) Flat Cover (200) Paper Cover (250) 当我回显json_编码时,它返回以下内容: {"300":"Plexi (300)","200":"Flat Cover (200)","250":"Paper Cover (250)"} 为什么我丢了一排谢谢 代码 $type = 'cover'; $stt = 1; $p
Metal Cover (300)
Plexi (300)
Flat Cover (200)
Paper Cover (250)
当我回显json_编码时,它返回以下内容:
{"300":"Plexi (300)","200":"Flat Cover (200)","250":"Paper Cover (250)"}
为什么我丢了一排谢谢
代码
$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);
$type='cover';
$stt=1;
$productId=81;
$results=array();
交换机($类型){
案例“封面”:
$query=mysql\u查询(“选择*
从专辑封面
其中productId='{$productId}'
");
$results[0]=“无”;
交换机($stt){
案例1:
while($row=mysql\u fetch\u array($query)){
echo$results[$row['price2']=$row['coverupgrade'].('.$row['price2'.])
;
}
打破
案例2:
while($row=mysql\u fetch\u array($query)){
$results[$row['price3']]=$row['coverupgrade'].'('.$row['price3'.]);
}
打破
案例3:
while($row=mysql\u fetch\u array($query)){
$results[$row['price4']]=$row['coverupgrade'].'('.$row['price4'.]);
}
打破
违约:
while($row=mysql\u fetch\u array($query)){
$results[$row['price1']=$row['coverupgrade'].'(“.$row['price1'.]);
}
打破
}
echo json_编码($results);
金属盖和Plexi具有相同的键(300)。键必须是唯一的,因此后者会覆盖第一个键
如果要为单个键存储多个值,则必须使用另一个数组(但不确定这是否是您想要的):
JSON编码后,它将如下所示:
{
"300":["Metal Cover (300)", "Plexi (300)"],
"200":["Flat Cover (200)"],
"250":["Paper Cover (250)"]
}
您正在丢失一行,因为您使用
$row['pricex']
的值作为键,并且有两行的价格相同,因此后面的值将覆盖第一行。为了有效地传输数据,您需要更改JSON的结构:
$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)){
$results['data'][] = array('price'=>$row['price2'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price2'] . ')<br>';
}
break;
case 2:
while($row = mysql_fetch_array($query)){
$results['data'][] = array('price'=>$row['price3'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price3'] . ')<br>';
}
break;
case 3:
while($row = mysql_fetch_array($query)){
$results['data'][] = array('price'=>$row['price4'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price4'] . ')<br>';
}
break;
default:
while($row = mysql_fetch_array($query)){
$results['data'][] = array('price'=>$row['price1'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price1'] . ')<br>';
}
break;
}
break;
}
echo json_encode($results);
请不要使用<代码> MySqL**/Case>函数来编写新代码。它们不再被维护,社区已经开始了。你应该学习和使用其中的一个或者。如果你不能决定哪一个,将帮助你。如果你选择PDO,同意,当他们付钱给我解决这个问题时,考虑它的帮助。在json_encode-{“0”:“无”,“数据”:[“数组(300)”,“数组(300)”,“数组(200)”,“数组(250)”}数组([0]=>None[data]=>Array([0]=>Array(300)[1]=>Array(300)[2]=>Array(200)[3]=>Array(250))@Bungdaddy好的,我已经从上面的代码中删除了
echo
语句(直到现在我才注意到)。无论如何,他们都会破坏输出,我认为他们可能会导致某些东西以某种方式被转换成一个字符串-在我玩过它之前,我不会完全理解。
$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)){
$results['data'][] = array('price'=>$row['price2'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price2'] . ')<br>';
}
break;
case 2:
while($row = mysql_fetch_array($query)){
$results['data'][] = array('price'=>$row['price3'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price3'] . ')<br>';
}
break;
case 3:
while($row = mysql_fetch_array($query)){
$results['data'][] = array('price'=>$row['price4'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price4'] . ')<br>';
}
break;
default:
while($row = mysql_fetch_array($query)){
$results['data'][] = array('price'=>$row['price1'], 'coverupgrade' => $row['coverupgrade'] . ' (' . $row['price1'] . ')<br>';
}
break;
}
break;
}
echo json_encode($results);
{
"0": "none",
"data": [
{
"price": "300",
"coverupgrade": "Metal Cover (300)"
},
{
"price": "300",
"coverupgrade": "Plexi (300)"
},
{
"price": "200",
"coverupgrade": "Flat Cover (200)"
},
{
"price": "250",
"coverupgrade": "Paper Cover (250)"
}
]
}