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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

3回答

20700閲覧

関数の戻り値を配列で返す方法を教えて下さい。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2015/06/03 09:52

編集2015/06/03 10:03

下記の関数の戻り値を 配列で 呼び出し側に渡すにはどうすればいいんですか?

lang

1//関数 2function func($argument){ 3 $query = mysql_query(" 4 select * from table where `id` = '$argument'; 5 ") 6 if($query ){ 7 while ($row = mysql_fetch_array($query )) { 8 $data1 = $row['data1']; 9 $data2 = $row['data2']; 10 $data3 = $row['data3']; 11 $data4 = $row['data4']; 12 } 13 } 14 /*やってみたけど失敗でした 15 $return= array('data1 ', 'data2', 'data3', 'data4'); 16 list($status, $data1, $data2, $data3, $data4) = $return; 17 return $return; 18 */ 19} 20 21//呼び出し 22$argument = 1; 23$return = func($argument); 24echo $return[data1]; 25

結果は Use of undefined constant data1 でエラーになってしまいます。

正しい方法を教えて下さい。
宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

ベストアンサー

連想配列の使い方が間違っています。

lang

1function func($argument){ 2 $query = mysql_query(" 3 select * from table where `id` = '$argument'; 4 ") 5 if($query ){ 6 while ($row = mysql_fetch_array($query )) { 7 $data1 = $row['data1']; 8 $data2 = $row['data2']; 9 $data3 = $row['data3']; 10 $data4 = $row['data4']; 11 } 12 } 13 return array('data1'=>$data1, 'data2'=>$data2, 'data3'=>$data3, 'data4'=>$data4); 14} 15 16//呼び出し 17$argument = 1; 18$return = func($argument); 19echo $return['data1']; 20

投稿2015/06/03 10:15

abo_factory

総合スコア29

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

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

退会済みユーザー

退会済みユーザー

2015/06/03 11:38

ご回答ありがとうございます。 他の回答者様の仰るようにvar_dump($return);で確認した所 おかげさまで関数側での代入は正しく行われたようです。 ただ、echo $return['data1']の部分に やっぱりエラーコード Notice: Use of undefined constant data1- assumed 'data1' が表示されてしまいます。
退会済みユーザー

退会済みユーザー

2015/06/03 11:40

エラーコードの後には 期待通りの値が表示されるのですが... このエラーコードは 無視してもいいんでしょうか?
takotakot

2015/06/03 12:24

Sora-tan 様 echo $return[data1]; と echo $return['data1']; は違います。よく確かめて下さい。
退会済みユーザー

退会済みユーザー

2015/06/03 12:41

ご親切に 色々ありがとうございました。 気付かない間違いが多くて まだまだ駄目ダメですが 頑張りたいと思っておりますので 今後とも宜しくお願い致します。 本当にありがとうございました
guest

0

PHPは、ど素人ですが、、、
echo $return[data1];のところを

echo $return[0];

じゃ、だめなんですかね?
data1が定義されていない云々のエラーがでてますので。

echo $return[data1];
の代わりに
var_dump($return);
を入れて、データダンプしてみてはどうでしょう?

投稿2015/06/03 10:27

編集2015/06/03 10:30
frogman

総合スコア129

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

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

退会済みユーザー

退会済みユーザー

2015/06/03 11:32

ご回答ありがとうございます。 var_dump($return); 試してみました 変数名が代入されてしまっていました。 ぱっやり関数側の代入の仕方が間違っているようです..
guest

0

lang

1var_dump($return);

で中身を確認するといいと思います。

投稿2015/06/03 10:16

yositaka

総合スコア25

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

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

退会済みユーザー

退会済みユーザー

2015/06/03 11:32

ご回答ありがとうございます。 var_dump($return); 試してみました 変数名が代入されてしまっていました。 ぱっやり関数側の代入の仕方が間違っているようです..
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問