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

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

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

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

PHP

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

Q&A

解決済

1回答

873閲覧

PHPのユーザー定義関数について教えてください

abrt29

総合スコア12

MySQL

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

PHP

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

0グッド

0クリップ

投稿2020/10/23 13:00

PHP,MySQL(ユーザー定義関数)を学習中なのですが、
例えば
function example() {
処理内容;
}
example();
と、実行した際にようやく関数内の処理が実行されると認識しているのですが、
以下の内容はなぜ関数呼び出し(実行)を行っていないのに実行されるのでしょうか。
プログラミング学習初心者のため丁寧に教えていただけると助かります...

<?php define('TAX', 1.05); // 消費税 define('DB_HOST', 'localhost'); // データベースのホスト名又はIPアドレス define('DB_USER', 'username'); // MySQLのユーザ名 define('DB_PASSWD', 'passwd'); // MySQLのパスワード define('DB_NAME', 'dbname'); // データベース名 define('HTML_CHARACTER_SET', 'UTF-8'); // HTML文字エンコーディング define('DB_CHARACTER_SET', 'UTF8'); // DB文字エンコーディング $goods_data = []; // DB接続 $link = get_db_connect(); // 商品の一覧を取得 $goods_data = get_goods_table_list($link); // DB切断 close_db_connect($link); // 商品の値段を税込みに変換 $goods_data = price_before_tax_assoc_array($goods_data); // 特殊文字をHTMLエンティティに変換 $goods_data = entity_assoc_array($goods_data); /** * 税込み価格へ変換する(端数は切り上げ) * @param int $price 税抜き価格 * @return int 税込み価格 */ function price_before_tax($price) { return ceil($price * TAX); } /** * 商品の値段を税込みに変換する(配列) * @param array $assoc_array 税抜き商品一覧配列データ * @return array 税込み商品一覧配列データ */ function price_before_tax_assoc_array($assoc_array) { foreach ($assoc_array as $key => $value) { // 税込み価格へ変換(端数は切り上げ) $assoc_array[$key]['price'] = price_before_tax($assoc_array[$key]['price']); } return $assoc_array; } /** * 特殊文字をHTMLエンティティに変換する * @param str $str 変換前文字 * @return str 変換後文字 */ function entity_str($str) { return htmlspecialchars($str, ENT_QUOTES, HTML_CHARACTER_SET); } /** * 特殊文字をHTMLエンティティに変換する(2次元配列の値) * @param array $assoc_array 変換前配列 * @return array 変換後配列 */ function entity_assoc_array($assoc_array) { foreach ($assoc_array as $key => $value) { foreach ($value as $keys => $values) { // 特殊文字をHTMLエンティティに変換 $assoc_array[$key][$keys] = entity_str($values); } } return $assoc_array; } /** * DBハンドルを取得 * @return obj $link DBハンドル */ function get_db_connect() { // コネクション取得 if (!$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWD, DB_NAME)) { die('error: ' . mysqli_connect_error()); } // 文字コードセット mysqli_set_charset($link, DB_CHARACTER_SET); return $link; } /** * DBとのコネクション切断 * @param obj $link DBハンドル */ function close_db_connect($link) { // 接続を閉じる mysqli_close($link); } /** * クエリを実行しその結果を配列で取得する * * @param obj $link DBハンドル * @param str $sql SQL文 * @return array 結果配列データ */ function get_as_array($link, $sql) { // 返却用配列 $data = []; // クエリを実行する if ($result = mysqli_query($link, $sql)) { if (mysqli_num_rows($result) > 0) { // 1件ずつ取り出す while ($row = mysqli_fetch_assoc($result)) { $data[] = $row; } } // 結果セットを開放 mysqli_free_result($result); } return $data; } /** * 商品の一覧を取得する * * @param obj $link DBハンドル * @return array 商品一覧配列データ */ function get_goods_table_list($link) { // SQL生成 $sql = 'SELECT goods_name, price FROM goods_table'; // クエリ実行 return get_as_array($link, $sql); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ユーザー定義関数</title> <style type="text/css"> table, td, th { border: solid black 1px; } table { width: 200px; } caption { text-align: left; } </style> </head> <body> <table> <caption>商品一覧(税込み)</caption> <tr> <th>商品名</th> <th>価格</th> <tr> <?php foreach ($goods_data as $value) { ?> <tr> <td><?php print $value['goods_name']; ?></td> <td><?php print $value['price']; ?></td> </tr> <?php } ?> </table> </body> </html>

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

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

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

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

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

otn

2020/10/23 13:33

どの部分のことを言ってますか?
退会済みユーザー

退会済みユーザー

2020/10/23 23:23

読む気にならんので、マークダウンで適切に記述してください。
guest

回答1

0

ベストアンサー

なぜ関数呼び出し(実行)を行っていないのに実行されるのでしょうか。

ユーザー関数の場合特殊なことをしない限り呼び出さずに実行されることはありません

投稿2020/10/24 08:30

yambejp

総合スコア116724

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問