使い所の難しいPHPの機能
PHPを始めて4年ほど経つのですが、4年間でほとんど使ったことのない機能が多数あります。それ以前に使い方を知らなくて雑誌などを見て「こんな使い方・機能があるのか?!」とビックリすることもあります。まあ、マニュアルを見ろって話ですね^^;
今日は使い所の難しいPHPの機能を紹介します。
PHPは他の言語と比べると、柔軟に出来ているので比較的簡単に習得できます。
特に型の定義が曖昧なので、予想外の動きをすることがあります。
下記の例を見てください。
$str = "0";
if($str) {
echo "真です";
} else {
echo "偽です";
}
「$str = "0";」は、文字列の「0」として定義してるのですが結果は「偽(false)」になります。
逆に「$str = "text";」や「$str = "3";」などを定義すると「真(true)」になります。
「$str」に値が入っていたら「真(true)」にしたいと思ってこのようなIF文を作ると正常に動きません。
この他にも以下のものは全て「偽(false)」になります。
$str = 0;
$str = "";
$str = null;
$str = array();
「if($str)」等は注意して使わないと後でバグの原因になります。
次は、以下のプログラムを見てください。
$num1 = 10;
$num2 = "10";
if($num1 == $num2) {
echo "\$num1と\$num2は同じ値です"."<br>";
} else {
echo "\$num1と\$num2は違う値です"."<br>";
}
これは「真(true)」になります。PHPの場合、型の定義が曖昧なのでTEXT型を数字として扱ってくれます。型まで分別してくれる方法もあります。
$num1 = 10;
$num2 = "10";
if($num1 === $num2) {
echo "\$num1と\$num2は同じ値です"."<br>";
} else {
echo "\$num1と\$num2は違う値です"."<br>";
}
「==」を「===」と書くと型まで判断してくれます。上記の例では「偽(false)」になります。
さあ、どんどん行きましょう。
$str = 10;
switch($str) {
case 20/10:
echo "20/10"."<br>";
break;
case 20/2:
echo "20/2"."<br>";
break;
}
これは見た目通りです。「switch~case」の「case」の部分に計算式を入れられます。
変数を定義する際に「$」を使いますが、「$$」とするとどうなるのでしょうか?
$test = "テストです";
$str1 = "test";
echo $$str1;
出力すると「テストです」と表示されます。
文字列を変数名として使いたい場合に使用するのでしょうが、実際に使ったことありません^^;
最後に繰り返し処理を制御する「break」「continue」の変わった使い方について紹介します。
まずは下記の例を見てください。
while(true) {
while(true) {
break 2;
}
}
「break 2」と記述すると、ネストしてあるループを抜けられます。「continue 2」も同じようにネストしているループを飛ばします。
以上、使い所の難しいPHPの機能でした!
次回は、Selenium(セレニウム)やFirePHP等を実験的に使っているのでこれらの紹介しようと思います。
