「PHP」の版間の差分
提供: Wikinote
細 (→メッセージの出力先) |
細 (→その他) |
||
(同じ利用者による、間の9版が非表示) | |||
行1: | 行1: | ||
== 覚え書き == | == 覚え書き == | ||
+ | === ユーザ定義関数 === | ||
+ | 関数定義の方法も各言語さまざまで覚えられないんすよ。。 | ||
+ | 引き数に $ が必要なことに注意。 | ||
+ | function foo($arg_1, $arg_2, /* ..., */ $arg_n) | ||
+ | { | ||
+ | echo "関数の例\n"; | ||
+ | return $retval; | ||
+ | } | ||
+ | |||
=== 配列について === | === 配列について === | ||
==== 初期化 (定義) ==== | ==== 初期化 (定義) ==== | ||
行8: | 行17: | ||
** 使い方:<code>if (isset($aArray)) ...</code> | ** 使い方:<code>if (isset($aArray)) ...</code> | ||
==== 値の追加 ==== | ==== 値の追加 ==== | ||
− | * <code>$aArray[] = $item;</code> | + | * <code>$aArray[key] = $item;</code> |
+ | * <code>$aArray[] = $item;</code> (自動で番号付与) | ||
+ | |||
=== 混沌の比較演算子 === | === 混沌の比較演算子 === | ||
* <code>NULL</code> と <code>array()</code> は <code>==</code> で比較すると同一であるが、<code>===</code> で比較すると異なる。 | * <code>NULL</code> と <code>array()</code> は <code>==</code> で比較すると同一であるが、<code>===</code> で比較すると異なる。 | ||
行27: | 行38: | ||
=== その他 === | === その他 === | ||
* include() と require() はどちらも指定されたファイルを読み込み、評価する関数だが、エラーが発生した場合の動作が異なる。require() ではエラーが発生すると処理を中断する。 | * include() と require() はどちらも指定されたファイルを読み込み、評価する関数だが、エラーが発生した場合の動作が異なる。require() ではエラーが発生すると処理を中断する。 | ||
+ | * テキストファイルの内容から 1 行 1 要素の配列を生成するには、file() 関数を使う。 | ||
+ | * 文字列をデリミタで分割して配列を生成するには、explode() 関数を使う。第 1 引数がデリミタ。 | ||
+ | * $_POST を展開するには、extract() 関数を使う。 | ||
== Tips == | == Tips == | ||
行36: | 行50: | ||
print floor($sec / 60 / 60 / 24); | print floor($sec / 60 / 60 / 24); | ||
?> | ?> | ||
+ | |||
+ | === 7 行アップローダ (7up.php) === | ||
+ | 7up.php という名前にしたいがために HTML 含めて 7 行に押さえ込んだアップローダ。 | ||
+ | エラー処理はほとんどしていません。 | ||
+ | 1 <html><head><title>7up</title></head><body> | ||
+ | 2 <form action="7up.php" method="POST" enctype="multipart/form-data"> | ||
+ | 3 <input type="file" name="upfile" size="50" /><input type="submit" value="upload" /></form> | ||
+ | 4 <? if (isset($_FILES['upfile'])) | ||
+ | 5 if (move_uploaded_file($_FILES['upfile']['tmp_name'], 'files/'.$_FILES['upfile']['name'])) | ||
+ | 6 chmod('files/'.$_FILES['upfile']['name'], 0644); ?> | ||
+ | 7 <nowiki><p><a href="files">uploaded files</a></p></nowiki></body></html> | ||
+ | 7up.php と同じディレクトリに files というディレクトリを作成して使用します。 | ||
+ | files のパーミッションを 777 にしないとダメかも。 |
2010年8月12日 (木) 00:42時点における最新版
目次
覚え書き
ユーザ定義関数
関数定義の方法も各言語さまざまで覚えられないんすよ。。 引き数に $ が必要なことに注意。
function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "関数の例\n"; return $retval; }
配列について
初期化 (定義)
-
$aArray = array();
で項目数 0 の配列が定義される。 - 定義した場合は、
count()
で値を持つかどうか確認する。 - 定義しない場合、
isset()
で定義されたかどうか確認後、参照する必要がある。- いきなり
count
などを行うと、Undefined variable のエラーが出る。 - 使い方:
if (isset($aArray)) ...
- いきなり
値の追加
-
$aArray[key] = $item;
-
$aArray[] = $item;
(自動で番号付与)
混沌の比較演算子
-
NULL
とarray()
は==
で比較すると同一であるが、===
で比較すると異なる。- こういう複雑さが嫌なんだよなあ…。やっぱり C が簡潔で良い。
メッセージの出力先
CentOS 5 のデフォルトでは、PHP のエラーの出力先は Apache のエラーログ (/var/log/httpd/error_log) になっている。 PHP でプログラムを組んでいる場合などには表示しているページに出力された方が楽なので、設定を切り替える。
設定は /etc/php.ini の以下の部分
error_reporting = E_ALL ★お好みで変更する。デフォルトは E_ALL : ;display_errors = Off display_errors = On ★
ただし、セキュリティ上好ましくないため、できるだけ Off にすること。
その他
- include() と require() はどちらも指定されたファイルを読み込み、評価する関数だが、エラーが発生した場合の動作が異なる。require() ではエラーが発生すると処理を中断する。
- テキストファイルの内容から 1 行 1 要素の配列を生成するには、file() 関数を使う。
- 文字列をデリミタで分割して配列を生成するには、explode() 関数を使う。第 1 引数がデリミタ。
- $_POST を展開するには、extract() 関数を使う。
Tips
シェルの実行結果を取得する
shell_exec()
関数を使う。
<? // サーバが起動してからの日数を得る。 $sec = shell_exec("gawk '{ print $1 }' /proc/uptime"); print floor($sec / 60 / 60 / 24); ?>
7 行アップローダ (7up.php)
7up.php という名前にしたいがために HTML 含めて 7 行に押さえ込んだアップローダ。 エラー処理はほとんどしていません。
1 <html><head><title>7up</title></head><body> 2 <form action="7up.php" method="POST" enctype="multipart/form-data"> 3 <input type="file" name="upfile" size="50" /><input type="submit" value="upload" /></form> 4 <? if (isset($_FILES['upfile'])) 5 if (move_uploaded_file($_FILES['upfile']['tmp_name'], 'files/'.$_FILES['upfile']['name'])) 6 chmod('files/'.$_FILES['upfile']['name'], 0644); ?> 7 <p><a href="files">uploaded files</a></p></body></html>
7up.php と同じディレクトリに files というディレクトリを作成して使用します。 files のパーミッションを 777 にしないとダメかも。