質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4400閲覧

PDO経由で取得した2次元配列をJSONに変換する過程について

true

総合スコア440

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2015/06/15 02:19

編集2015/06/15 02:21

Ajaxを想定したうえで、phpで出力する2次元配列をJSONの配列に変換する過程で、下記コードの7行目に改善の余地がないかどうかご教示ください。

具体的には$fruits[] = array($row[0], $row[1]);を添え字に$iなどの変数を渡して簡潔なコードにできないかどうか思案しているところですが、foreach内で、どう渡していいかよくわかりません。for ($i=0; $i<count($row); $i++) くらいしか思い浮かびませんが入れ子のなかでどうやって反映させるかよく分かりません。何卒よろしくお願い致します。

// DB準備
sqlite3 test.db
->sqlite3
create table fruits (name text, price integer);
insert into fruits values ("apple", 100);
insert into fruits values ("banana", 200);

// 実行結果
// php2次元連想配列
array(2) { [0]=> array(2) { [0]=> string(5) "apple" [1]=> string(3) "100" } [1]=> array(2) { [0]=> string(6) "banana" [1]=> string(3) "200" } }

// 2次元JSON
[["apple","100"],["banana","200"]]

lang

1 1 <?php 2 2 $conn = new PDO("sqlite:test.db"); 3 3 $stmt = $conn->query("SELECT * FROM fruits"); 4 4 5 5 6 6 foreach ($stmt as $row) { 7 7 $fruits[] = array($row[0], $row[1]); 8 8 } 9 9 10 10 /* 失敗例 11 11 foreach ($stmt as $rows => $row) { 12 12 $fruits[] = array($row); 13 13 } 14 14 */ 15 15 16 16 var_dump($fruits); 17 17 $json = json_encode($fruits); 18 18 echo $json; 19 19 $conn = null; 20 20 ?>

centos6.6
php --version 5.4.36
sqlite3 --version 3.6.20
ブラウザ chrome

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自力でループを回さなくても、

lang

1$fruits = $stmt -> fetchAll(PDO::FETCH_NUM);

とすれば、目的の配列を得ることができます。
PDOStatement::fetchAll
PDO::FETCH_NUMの意味

投稿2015/06/15 02:35

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

true

2015/06/15 02:47

誠にありがとうございました!PDOのオプションについてもお示しくださり、ありががとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問