PHP 基本的な処理
PHPの基本的な処理に関する備忘録。
- ランダムな値を得る
- 変数の状態を調べる
- アクセス元のIPアドレスからホスト名を調べる
- 外部ファイルを読み込む
- 数学的な計算をする
- 数字をカンマ区切りで出力する
- if文をスッキリさせる
- 出力の記述をスッキリさせる
- PHPのタグをスッキリさせる
- 指定の関数が使用可能(定義されている)か調べる
- 変数の値を変数名として使用する
- defineによる定数の名前を変数で指定する
- シェルを通じてコマンドを実行する
ランダムな値を得る
rand関数で1~10の範囲でランダムな整数値に得る
<?php srand((int)(((float)microtime())*1000000)); $num = rand(1,10); echo $num; ?>
1~100までならばrand(1, 100)とする。
変数の状態を調べる
isset関数で値が入っているか調べる
<?php $rt = isset($hensu); ?> false ⇒ $hensuが未定義・NULL true ⇒ それ以外の状態
empty関数で値が入っていないか調べる
<?php $rt = empty($hensu); ?> true ⇒ $hensuが未定義・NULL・空文字列・空配列・0・'0'・false false ⇒ それ以外の状態
アクセス元のIPアドレスからホスト名を調べる
gethostbyaddr関数にIPアドレスを渡して取得する
IPアドレスはサーバー変数から取得できる。
<?php $ip = $_SERVER["REMOTE_ADDR"]; $host = gethostbyaddr($ip); ?>
ホスト名の取得に失敗したとき、返り値はIPアドレスのままになる。
外部ファイルを読み込む
require文(include文)で外部ファイルを読み込む
「sub.php」 <?php $message = 'Hello, My HomePage!'; ?> 「main.php」 <?php $message = ''; require('sub.php'); //include('sub.php');でも可 echo $message; ?> 「出力結果」 Hello, My HomePage!
require_once文(include_once文)で外部ファイルを読み込む
「sub.php」 <?php $counter++; ?> 「main.php」 <?php $counter = 0; require_once('sub.php'); //include_once('sub.php');でも可 require_once('sub.php'); require_once('sub.php'); echo 'counter = ' . $counter; ?> 「出力結果」 counter = 1;
2度目以降のrequire_once文は無視される。
require_once文の代わりにrequire文を使うと、出力結果は「counter = 3」になる。
require文(include文)で存在しない外部ファイルを読み込む
require文の場合、読み込みに失敗するとエラーとなり処理は停止する
「main.php」 <?php echo 'step1<br />'; require('sub2.php'); //sub2.phpは存在しないファイル echo 'step2'; ?> 「出力結果」 step1 Fatal error: main() [function.require]: Failed opening required……
include文の場合、読み込みに失敗すると警告を出して処理は続行する
「main.php」 <?php echo 'step1<br />'; include('sub2.php'); //sub2.phpは存在しないファイル echo 'step2'; ?> 「出力結果」 step1 Warning: main() [function.include]: Failed opening…… step2
数学的な計算をする
少数点以下切り上げ(ceil関数)、切り捨て(floor関数)、四捨五入(round関数)
<?php $fno1 = 5.2; $fno2 = 5.7; echo ceil($fno1) . ',' . ceil($fno2) . '<br />'; echo floor($fno1) . ',' . floor($fno2) . '<br />'; echo round($fno1) . ',' . round($fno2); ?> 「出力結果」 6,6 5,5 5,6
べき乗(pow関数)、平方根(sqrt関数)
<?php echo pow(2,8) . '<br />'; //2の8乗 echo sqrt(256); //256の平方根 ?> 「出力結果」 256 16
絶対値(abs関数)
<?php echo abs(-5) . '<br />'; echo abs(5); ?> 「出力結果」 5 5
最大値(max関数)、最小値(min関数)
<?php //最大値を計算する echo max(1,6,3,9,7) . '<br />'; $numlist = array(1,6,3,9,7); echo max($numlist) . '<br />'; //最小値を計算する echo min(1,6,3,9,7) . '<br />'; $numlist = array(1,6,3,9,7); echo min($numlist); ?> 「出力結果」 9 9 1 1
数字をカンマ区切りで出力する
number_format関数を使って出力する
<?php $price = 123456789; echo number_format($price) . '円'; ?> 「出力結果」 123,456,789円
if文をスッキリさせる
3項演算子を使って偶数か奇数か判定する
<?php $num = 122; echo ($num%2==0) ? '偶数' : '奇数'; ?> 「出力結果」 偶数
「[条件式] ? [真の場合] : [偽の場合]」という形式で指定する。
出力の記述をスッキリさせる
ヒアドキュメントを使って変数の中身をテーブルで出力する
<?php $menu = '牛丼並盛'; $price = '380'; $calorie = '660'; //ヒアドキュメントで出力 echo <<<EOF <table border="1"> <tr><td>メニュー</td><td>値段</td><td>カロリー</td></tr> <tr><td>$menu</td><td>$price</td><td>$calorie</td></tr> </table> EOF; ?>
ヒアドキュメントを使うとHTMLの出力内容をそのまま記述できる上に、変数も埋め込める。
「<<<EOF」はヒアドキュメント開始の合図。
「EOF;」 はヒアドキュメント終了の合図。
PHPのタグをスッキリさせる
「php.ini」のshort_open_tagをOnにしてPHPのタグを短縮する
「php.ini」を開き、「short_open_tag = On」に変更して保存する。そうするとPHPのタグ"<?php"を、"<?"と短縮できる。
<? echo 'Hello, JUGEM'; ?>
さらに、"<? echo"を、"<?="と短縮できる。
<?= 'Hello, JUGEM'; ?>
これによってHTML内にPHPを埋め込む記述がスッキリする。
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
XMLと組み合わせるときは注意が必要
XMLの記述である"<?xml version="1.0"?>"も、PHPのタグとみなされてしまうので、
<? echo '<?xml version="1.0"?>'; ?>
とする必要がある。
結論としてPHPのタグの短縮機能は使わない
サーバーを移行する際、「php.ini」が編集できず「short_open_tag = Off」の環境だと、短縮したタグを通常のタグに戻す作業が必要となってしまう。従って、どちらでも対応できるようにPHPのタグの短縮機能は基本的に使わないようにする。
指定の関数が使用可能(定義されている)か調べる
function_exists関数を使ってエスケープ処理を切り替える
<?php //使用可能な関数を選ぶ if (function_exists('mysql_real_escape_string')) { $string2 = mysql_real_escape_string($string); } elseif (function_exists('mysql_escape_string')) { $string2 = mysql_escape_string($string); } else { $string2 = addslashes($string); } ?>
変数の値を変数名として使用する
可変変数を使って「$data01='apple';」という代入を行う
<?php $hoge = 'box'; //可変変数を使う場合は「$」を2回続ける $$hoge = 'apple'; echo $box; ?> 「出力結果」 apple
defineによる定数の名前を変数で指定する
constant関数を使って指定する
<?php define('TEISU_01', 100); define('TEISU_03', 300); define('TEISU_04', 400); for ($i=1; $i<=4; $i++) { //定数の名前を組み立てる $teisu = 'TEISU_0' . $i; //定数の名前が定義されていたら定数の値を出力する if (defined($teisu)) { echo constant($teisu) . '<br />'; } else { echo '"' . $teisu . '" is not defined<br />'; } } ?> 「出力結果」 100 "TEISU_02" is not defined 300 400
シェルを通じてコマンドを実行する
shell_exec関数を使ってサーバーの負荷を調べる
<?php $command = 'uptime'; $rt = shell_exec(escapeshellcmd($command)); echo $rt; ?> 「出力結果」 17:49:16 up 1 days, 2:37, 1 users, load average: 0.00, 0.00, 0.00
- 作者: 谷藤賢一,河原健人
- 出版社/メーカー: リックテレコム
- 発売日: 2011/12/09
- メディア: 大型本
- 購入: 10人 クリック: 129回
- この商品を含むブログ (7件) を見る