Php 更改JSON输出

Php 更改JSON输出,php,mysql,json,mysqli,Php,Mysql,Json,Mysqli,我使用以下代码从表中获取内容。 但是我需要稍微更改JSON的输出 $rows = array(); if(isset($_GET['fruitName'])) { $stmt = $pdo->prepare("SELECT variety FROM fruit WHERE name = ? ORDER BY variety"); $stmt->execute(array($_GET['fruitName'])); $rows = $stmt->fetchAll(PDO::FET

我使用以下代码从表中获取内容。 但是我需要稍微更改JSON的输出

$rows = array();
if(isset($_GET['fruitName'])) {
$stmt = $pdo->prepare("SELECT variety FROM fruit WHERE name = ? ORDER BY variety");
$stmt->execute(array($_GET['fruitName']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($rows);
上面的代码显示如下:

[{"variety":"Apple"},{"variety":"Banana"},{"variety":"Orange"},{"variety":"Pear"}]
[{"optionValue": "Apple", "optionDisplay": "Apple"}, {"optionValue": "Banana", "optionDisplay": "Banana"}, {"optionValue": "Orange", "optionDisplay": "Orange"}, {"optionValue": "Pear", "optionDisplay": "Pear"}]
但我希望它是这样的:

[{"variety":"Apple"},{"variety":"Banana"},{"variety":"Orange"},{"variety":"Pear"}]
[{"optionValue": "Apple", "optionDisplay": "Apple"}, {"optionValue": "Banana", "optionDisplay": "Banana"}, {"optionValue": "Orange", "optionDisplay": "Orange"}, {"optionValue": "Pear", "optionDisplay": "Pear"}]

将select语句更改为

"SELECT variety as `optionValue`,variety as `optionDisplay` FROM fruit WHERE name = ? ORDER BY variety"

不完全确定,因为我无法对此进行测试,但您不能将SQL语句更改为:

$stmt = $pdo->prepare("SELECT variety as optionValue, variety as optionDisplay FROM fruit WHERE name = ? ORDER BY optionDisplay");

一种解决方案是如下调整SQL查询:

[{"variety":"Apple"},{"variety":"Banana"},{"variety":"Orange"},{"variety":"Pear"}]
[{"optionValue": "Apple", "optionDisplay": "Apple"}, {"optionValue": "Banana", "optionDisplay": "Banana"}, {"optionValue": "Orange", "optionDisplay": "Orange"}, {"optionValue": "Pear", "optionDisplay": "Pear"}]
选择品种作为选项值,选择品种作为选项显示来自水果的名称=?按品种订购
另一种方法是单独解析每一行并手工构建数组。所以不是

$rows=$stmt->fetchAll(PDO::FETCH_ASSOC);
你可以用

$rows=array();
而($row=$stmt->fetch(PDO::fetch\U ASSOC)){
$rows[]=数组('optionValue'=>$row['variation'],'optionDisplay'=>$row['variation']);
}

我不明白你为什么要这样做,但不管怎样,这就是方法:

$new_array=array();
foreach ($rows as $row) {
array_push($new_array,array("optionValue"=>$row['variety'],"optionDisplay"=>$row['variety']));
}
echo json_encode($new_array);

等等,你要的是添加空格?这有什么意义?如果你需要你的压缩字符串以一种人类可以更好地阅读的方式呈现,只需在谷歌上搜索json格式化程序并在那里格式化你的字符串。不,忘记空格。我需要使用表中相同的值添加文本:optionValue和optionDisplay。我想我会调整我的SQL查询。谢谢Sirko