1

次のコードを使用して、テーブルからコンテンツを取得します。しかし、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"}]
4

5 に答える 5

2

1 つの解決策は、次のように SQL クエリを調整することです。

SELECT variety AS optionValue, variety AS optionDisplay FROM fruit WHERE name = ? ORDER BY variety

別のアプローチは、各行を個別に解析し、手動で配列を構築することです。だから代わりに

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

あなたが使用できる

$rows = array();
while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
  $rows[] = array( 'optionValue' => $row['variety'], 'optionDisplay' => $row['variety'] );
}
于 2012-10-19T14:18:38.800 に答える
0

selectステートメントを次のように変更します

"SELECT variety as `optionValue`,variety as `optionDisplay` FROM fruit WHERE name = ? ORDER BY variety"
于 2012-10-19T14:16:09.160 に答える
0
$data = '[{"variety":"Apple"},{"variety":"Banana"},{"variety":"Orange"},{"variety":"Pear"}]';

$arr = new array();
// loop through the data
foreach($data as $k => $v){
  // build an array of values formatted as you want
  $arr[] = '{"optionValue": "'.$v.'", "optionDisplay": "'.$v.'"}}';
}
// join all the values togetger, and pass through json parser
$obj = json_decode(',', "[" . implode($arr) . "]");
// should return in your desired format...
于 2012-10-19T14:16:24.027 に答える
0

これをテストできないため、完全にはわかりませんが、SQLステートメントを次のように変更できませんでした:

$stmt = $pdo->prepare("SELECT variety as optionValue, variety as optionDisplay FROM fruit WHERE name = ? ORDER BY optionDisplay");
于 2012-10-19T14:17:51.790 に答える
0

なぜこれをやりたいのかわかりませんが、とにかく、これが方法です:

$new_array=array();
foreach ($rows as $row) {
array_push($new_array,array("optionValue"=>$row['variety'],"optionDisplay"=>$row['variety']));
}
echo json_encode($new_array);
于 2012-10-19T14:20:08.923 に答える