| |
PHPは、同じことをするのに複数の書き方ができる場面が、
とても多いプログラミング言語だと思います。
「なんで2つあるの?」というもの、多いですね。
ここに全部は書ききれませんし、
新たなバージョンによって改廃が進んでいるところもありますが、
少しだけまとめてみました。
echoは複数の引数をカンマ(,)で区切って渡せますが、printはできません。
またprintは出力する値を戻り値として返しますが、echoは返しません。
そのためごくわずかですが、echoの方が高速と言われています。
| require(_once)とinclude(_once)の違い |
require(_once)は、インクルードしたスクリプトにエラーがあると、
そこで元のスクリプトの処理も中止してしまいます。
include(_once)は、エラーがあっても警告を表示し、
元のスクリプトの解釈を続行します。
デバッグやログのために変数、特に配列の内容を出力するという両関数、
var_dumpの方がデータ型も表示するなど、情報がより詳細です。
波括弧で制御構造のブロックを表現するC言語風で書くなら、
両者は文法上の意味は異なりますが、得られる結果は全く同じです。
しかし、PHPの古くからある別のコロンを使った文法
(if(条件):で始まり、endif;で終わる)
の中では、間にスペースを挟まないelseifしか使えません。
コロン風で書くなら、間にスペースを挟むelse ifは使えません。
どちらも記号定数を定義するものです。
「constはクラス定義の中でしか使えない」とよく言われますが、
PHP 5.3以降ではクラス定義の外でも使えるようになりました。
従って現在は、スコープに関してはdefineもconstも全く同じです。
今も残る差異は、defineは初期化時に式で演算ができるのに対して、
constは即値しか駄目で演算できない点があります。
下の例で、defineで256-1(=255)を代入するのはOKですが、
constで1024-1(=1023)を代入するのはエラーになります。
define("MAX_VALUE1", 256 - 1);
//const MAX_VALUE2 = 1024 - 1;
// エラーになる
const MAX_VALUE2 = 1023;
print "MAX1=" . MAX_VALUE1 . "\n";
print "MAX2=" . MAX_VALUE2 . "\n";
|
配列に1個ずつ値を追加するとき、
array_push関数を覚えてそればっかり使っている人はいませんか。
(鏡を指差す)実はもっと簡単に、配列の添字を省略することで、
末尾に既存の添字+1を発番して要素を追加できます。
以下の2つの配列の内容は全く同じ物です。
$arr1 = array();
array_push($arr1, 23);
array_push($arr1, 34);
array_push($arr1, 45);
$arr2 = array();
$arr2[] = 23;
$arr2[] = 34;
$arr2[] = 45;
|

(first uploaded 2011/07/09 last updated 2011/07/09, MISUMI URANO)
|