Perlに非常によく似た構文を持つPHPですが、
Perl以上に「1つの事をやるのに複数の手段がある」仕様が特徴的です。
preg_match関数の正規表現を引用符とスラッシュで二重に囲う点に最初戸惑いました。
<?php
/*============================*
* 複数行のコメントは
* このように
* 書けます。
*============================*/
# 1行コメントはこのように書けます。
// この方法でも書けます。
print("Hello, World.\n");
print("こんにちは。\n");
$var1 = 42;
$var2 = 35;
$var3 = $var1 + $var2;
$var4 = $var1 - $var2;
print("結果は${var3}と${var4}\n");
$msg = "結果は" . $var3 . "と" . $var4;
print($msg . "\n");
// C言語式の代入とインクリメント演算子もある
$var2 += 18;
$var3--;
$var4++;
print("${var2} ${var3} ${var4}\n");
// 配列 初期化時の値は 42 53 76 8
$arr1 = [$var1, $var2, $var3, $var4];
// 分岐と反復。Else Ifは波括弧形式ならelseifでもelse ifでも可
foreach($arr1 as $v){
if($v >= 50){
print("${v}は50以上です。\n");
} else if($v >= 40 && $v < 50){
print("${v}は40以上50未満です。\n");
} else {
print("${v}は50未満です。\n");
}
}
// 普通のfor文もある
$var5 = 1;
for($i=0; $i < count($arr1); $i++){
$var5 *= $arr1[$i];
}
// 整形出力。number_formatでカンマ区切りと小数点以下固定の整形ができる
print(number_format($var5, 2) . "\n");
print("計算結果:[" . sprintf("%15s", number_format($var5, 2)) . "]\n");
$str1 = "Hello,Power,Shell,World";
print("文字列の長さは" . strlen($str1) . "\n");
// 大文字に変換
print(strtoupper($str1) . "\n");
// 配列を分割。splitは廃止された
$arr2 = explode(",", $str1);
// 配列を表示
var_dump($arr2);
foreach($arr2 as $v){
// 正規表現をスラッシュと二重引用符の両方で囲む点が特徴
if(preg_match("/^.[opqr]/", $v)){ // 2文字目がopqrのいずれか
print("${v}はマッチします。\n");
} else {
print("${v}はマッチしません。\n");
}
}
// 現在時刻の取得
$dstr1 = date("Y/m/d H:i:s");
// 指定した年月日の値を取得。順番は時分秒月日年
$dstr2 = date("Y/m/d", mktime(0, 0, 0, 4, 26, 2020));
// ヒアドキュメント
$s = <<<END
現在時刻は${dstr1}です。
特定の日付とは…${dstr2}です。
END;
print($s);
// end.