PHP 2010/01/27 09:25
PHP基礎文法最速マスター
PerlとRubyの文法一覧がとても良くまとまっていたので、便乗してPHPでもやってみました。
他の言語をある程度知っている人はこれを読めばPHPの文法を何となく理解できると思います。
間違い、不足等々あれば教えて下さいm(_ _)m
1.基礎
コードブロック
PHPコードは「<?php」という開始タグから始まります。終了タグは「?>」です。HTMLにPHPコードを埋める際は終了タグを使いますが、ライブラリのようにPHPコードのみを記述する際は終了タグを省くことが慣例となっています。
終了タグを省く理由について id:Kiske さんに解説頂いています。ありがとうございます。
PHP基礎文法最速マスターの補足 - Absolute Playing!
-
<?php hoge(); ?>
-
<?php
-
$i = 1;
-
hoge($i);
-
?>
-
<?php
-
hoge();
-
// ?>が無い
print文
print/echoを使います。
デバッグにはvar_dump()をよく使います。var_dump()では変数の内容が出力されます。
コメント
一行コメント
-
// コメント
-
# コメント
複数行コメント
-
/*
-
コメント
-
コメント
-
*/
変数の宣言
変数の宣言です。
-
$a = 'string';
-
$i = 1;
スクリプトの実行
コマンドラインでPHPファイルを実行します。
$ php hoge.php
PHPコードを直接記述することもできます。<?php ?>は不要です。
$ php -r "var_dump('a');"
出力結果をファイルに書き出すにはリダイレクトを使います。
$ php hoge.php > out
スクリプトの文法チェック
phpコマンドで文法がチェックできます。
$ php -l hoge.php
2. 数値
数値の表現
数値には整数、浮動小数点があります。
-
<?php
-
$int = 100;
-
$float = 100.123;
四則演算
-
<?php
-
$i = 1 + 1;
-
$i = 1 - 1;
-
$i = 1 * 1;
-
$i = 1 / 2;
余りと商。商を求めるには普通の除算を行った後にintval関数で整数部を取り出します。
-
<?php
-
$mod = 3 % 2; // 余り
インクリメントとデクリメント
-
<?php
-
$i++; // インクリメント
-
$i--; // デクリメント
3. 文字列
文字列表現
文字列はシングルクォートかダブルクォートで囲みます。ダブルクォートの中では\t(タブ)や\n(改行)などの特殊文字を利用することができます。またダブルクォートで囲まれた文字列の中では変数展開することができます。
-
<?php
-
$str1 = "abc\tcde"; // abc cde(\tがタブ[0x09])
-
$str2 = 'abc\tcde'; // abc\tcde(\tが文字列)
-
-
$str3 = "$str1 100" // abc cde 100 //$str1が展開される
-
$str4 = "{$str1}100" // 変数名に文字列が繋がる時は{}で囲む
文字列操作
-
<?php
-
// 結合
-
$join1 = 'aaa' . 'bbb';
-
-
// 分割
-
-
// 長さ
-
// 長さ(マルチバイト)
-
// 内部エンコーディングの設定が必要
-
// mb_internal_encoding('UTF-8');
-
-
// 切り出し
-
-
// 検索
4. 配列、連想配列
PHPには連想配列しかありません。配列はキーが数値の連想配列として表現されます。また順序を持っています。
要素の参照と代入
-
<?php
-
$i = $array1[0];
-
$s = $array2['a'];
-
<?php
-
$array1[3] = 1;
-
$array2['z'] = 'zzz';
要素の個数
-
<?php
配列の操作
-
<?php
-
// 先頭を取り出す
-
// 先頭に追加
-
// 末尾を取り出す
-
// 末尾に追加
連想配列に関する関数
-
<?php
-
// キーの取得
-
// 値の取得
-
// キーの存在確認
-
// キーの削除
6. 制御文
if文
-
<?php
-
if (条件) {
-
}
HTML内で記載する際は以下のような記法も用いられます。
-
<?php if (条件): ?>
-
<span>hoge</span>
-
<?php endif; ?>
if 〜 else文
-
<?php
-
if (条件) {
-
} else {
-
}
HTML内で記載する際は以下のような記法も用いられます。
-
<?php if (条件): ?>
-
<span>hoge</span>
-
<?php else: ?>
-
<span>foo</span>
-
<?php endif; ?>
if 〜 else if 文
elseif or else ifが可。
-
<?php
-
if (条件) {
-
} else if {
-
}
HTML内で記載する際は以下のような記法も用いられます。
-
<?php if (条件): ?>
-
<span>hoge</span>
-
<?php elseif (条件): ?>
-
<span>foo</span>
-
<?php endif; ?>
while文
-
<?php
-
$i = 0;
-
while ($i <5) {
-
// 処理
-
$i++;
-
}
HTML内で記載する際は以下のような記法も用いられます。
-
<?php while ($i <5): ?>
-
<?php $i++; ?>
-
<?php endwhile; ?>
for文
-
<?php
-
for ($i = 0 ; $i <5 ;$i++) {
-
}
HTML内で記載する際は以下のような記法も用いられます。
-
<?php for ($i = 0 ; $i <5 ; $i++): ?>
-
<?php endfor; ?>
foreach文
連想配列の各要素を処理できます。
-
<?php
-
foreach ($array as $v) {
-
// $v が要素の値
-
}
-
foreach ($array as $k => $v) {
-
// $k が要素のキー、$v が要素の値
-
}
HTML内で記載する際は以下のような記法も用いられます。
-
<?php foreach ($array as $v): ?>
-
<?php endforeach; ?>
7. サブルーチン(関数)
PHPには関数があります。戻り値を返却するにはreturnを使用します。
8. ファイル入出力
ファイル入出力にはいくつかの方法があります。
fopen関数
ファイルポインタを使ってファイルの入出力を行います。
file関数
ファイル全体を読み込んで配列に格納します。
-
<?php
file_get_contents関数 / file_put_contents関数
file_get_contents関数はファイル全体を読み込んで文字列として格納します。file_put_contents関数は変数の値を全てファイルに書き込みます。
-
<?php
-
// 読み込み
-
-
// 書き込み
-
file_put_contents("/path/to/file", $buff); // ファイルに $buff の内容を書き込み
知っておいた方が良い文法
真偽値
PHPでは以下の場合、偽と判断されます。
- boolean の FALSE
- integer の 0 (ゼロ)
- float の 0.0 (ゼロ)
- 空の文字列、 および文字列の "0"
- 要素の数がゼロである 配列
- メンバ変数の数がゼロである オブジェクト (PHP 4のみ)
- 特別な値 NULL (値がセットされていない変数を含む)
- 空のタグから作成された SimpleXML オブジェクト
==と===
==/!=といった比較演算子では、数値・文字列の自動変換が行われます。よって意図しない結果をもたらす場合があります。
こういった場合、===/!==を使うと変数の型も厳密に比較することができます。
変数が定義されているかどうか
変数が定義されているかどうかを調べるにはisset関数を使用します。定義されている場合はtrueが返ります。ただしisset関数では変数の値がNULLの場合もfalseが返ります。
-
<?php
コマンドライン引数
コマンドライン引数を受け取るには$argv変数を使用します。
-
<?php
array_map
array_map関数を使うと、連想配列の各要素に処理をして新たな連想配列として受け取ることができます。
-
<?php
array_filter
array_filter関数を使うと、条件に一致した要素のみを新たな連想配列として受け取ることができます。
-
<?php
複数の変数への代入
php.ini
PHPには設定ファイルがあります。設定に応じて挙動が変わるので注意が必要です。この設定はphp.iniという設定ファイルの他に、httpd.conf、.htaccess、そしてソースコードにて設定が可能です。
設定方法は、項目に応じて変わりますが、ソースコードで設定を行う際はini_set()を使うことが多いです。
-
<?php
現在の設定は、phpinfo関数もしくはphpコマンドで確認できます。
-
<?php
# 全ての設定値を出力 $ php -i # grep で絞る $ php -i | grep include_path
PHP参考資料
公式マニュアル
PHPに関する書籍は多く出版されていますが、やはり一番参考になるのは公式マニュアルです。
公式マニュアルを使う際にちょっとしたTIpsを。
ブラウザで公式マニュアルを開く際は、http://php.net/の後ろに調べた関数名を入力すると直接そのページが開きます。合致するものがなければ類似するキーワードが一番表示され、候補の中から選択することもできます。
http://php.net/array
コーディング規約
コーディング規約にはいくつか流派があるのですが、Zend Frameworkのコーディング規約が参考になるでしょう。
Zend Framework PHP 標準コーディング規約 - Zend Framework Manual
モダンPHP
PHPにはオブジェクト指向言語としても機能があります。以下の資料が参考になります。
モダンPHP勉強会を開催しました & 資料 - 肉とご飯と甘いもの @ sotarok
フレームワーク
PHPを使ったWebシステム開発ではフレームワークを用いることがメジャーになりつつあります。
多くのオープンソースフレームワークがありますが、主要なものは以下です。
■Related Posts
on 27 1月 2010 at 18:15 1.PHP基礎文法最速マスター | Shin x blog « とっても! ちゅどん(雑記帳) said …
[...] PHP基礎文法最速マスター | Shin x blog PHP基礎文法最速マスター | Shin x blog [...]
on 28 1月 2010 at 10:52 2.Absolute Playing! said …
[php]PHP基礎文法最速マスターの補足...
id:shin1x1 さんがPerl、Rubyに続いてPHP基礎文法最速マスター | Shin x blogで基礎文法をまとめてくれています。ありがとうございます。空いた時間で書いてみようかなと思っていたら先越されてしまいました。 記事を読んでみてコードブロックの説明を最初読んだときに少し...