今回はPHPの使い方について、簡単且つ素早くまとめます。
すでに他言語を習得している方ならすぐに覚えれるかなと思います。
もし間違っている部分とかあったら訂正しますので教えてください
文字
文字の出力
echo “文字”;
echo ‘文字’;
print “文字”;
print ’文字’;
print (文字);
echoのほうが若干速度が速い。なんと10万回繰り返したときに0.1秒速いw
echoはprintにはないこのような書き方も出来る。
echo “文字”,”文字2”;
シングルクォテーション、ダブルクォテーションの違い
そもそもなんのこっちゃ?という人もいると思います。実は僕もそうでしたw
色々なサイトを見ても、小さすぎてなんのことを説明しているのかわからない・・・
” ←ダブルククォテーションこのチョメチョメのことです
’ ←シングルクォテーションこのチョメのことです。
ダブルクォテーションだと変数が展開
シングルクォテーションだと変数が展開されません
$hoge = “ダブルとシングル”;
echo “$hoge”; //1
echo ‘$hoge’; //2
同じようでも結果は
1の場合ダブルとシングルと表示されますが、2の場合、$hogeとそのまま出力されます。
文字操作(一部切り取り)
$b = ‘abcdef’;
$b= substr($a, 1);
“bcdef” 0から数えて1番目以降
$b = substr($a, 0, 2);
“ab” 0から数えて0番目から2文字長
文字操作(?以降を切り取り)
$email = 'usa@example.com'; @以降を取得 $usa = strstr($email, '@'); //
結果:@example.com
$user = strstr($email, '@', true);
結果:usa PHP5.3.0以降
文字の置き換え
$a = "Usachannel"; $b = strtr($s, 'U', 'u'); 結果:uchannel $b = strtr($s, array('a' => 'A', 'n' => '')); 結果:UsAchAel
ヒアドキュメント
echo <<< EOF 文字 $hoge EOF;
変数はヒアドキュメント内で展開できます。
echo ではなく $usa = のように書くとすぐに展開せずに代入も出来ます。
同じ文を何回か読み出すときなどは代入してそのつど表示したほうが効率良いでしょう。
最初に定義した「EOF」最後には「EOF;」と書きます。
「END」「EOT」なども使われますが最初と最後は同じにします。
コメントアウト
//文字
#文字
代入
$a = “文字”;
$a = ‘文字’;
isset()
変数がセットされたかチェックします。
if(isset($a)){ echo "代入されました"; }else{ echo "代入されていません"; }
この場合は$aには何も入れていないため代入されていませんとなります。
定数
define() 一度格納された値を保持します。
何らかの計算を用いても、定数の値が変わることは決してありません
四則演算
結果が$aに代入されます。
$a = 1 + 1;
$a = 1 – 1;
$a = 1 * 2;
$a = 1 / 2;
イクリメントとデクリメント
$i++;
++$a;
$i–;
–$a;
比較演算子
代入演算子
複合演算子
論理演算子
配列
array();
空の配列を作ります。
array(apple,orange,banana)
結果:Array ( [0] => apple [1] => orange [2] => banana )
このような結果になります。
変数はよく箱に例えられますが、配列はタンスに例えたいと思います。
引き出し
といった具合です。
配列を扱う関数はここで紹介するには多すぎるので一部だけにしますが、これさえ理解しておけば、タンスの棚を削除するか、タンスを入れ替えるか、タンスの中身を入れ替えるか、タンスを並べ替えるかという動作を考えればいいだけです。
多次元配列
$ab = array('1','ホゲ雄','23歳','男'); $ac = array('2','ホゲ太','25歳','男'); $ad = array('3','ホゲ美','22歳','女'); $ae = array('4','ホゲ江','22歳','女'); $af = array('5','ホゲ子','21歳','女'); $meib = array($ab,$ac,$ad,$ae,$af); print_r($meib); echo "こんにちは{$meib[1][1]}";
結果:
Array ( [0] => Array ( [0] => 1 [1] => ホゲ雄 [2] => 23歳 [3] => 男 ) [1] => Array ( [0] => 2 [1] => ホゲ太 [2] => 25歳 [3] => 男 ) [2] => Array ( [0] => 3 [1] => ホゲ美 [2] => 22歳 [3] => 女 ) [3] => Array ( [0] => 4 [1] => ホゲ美 [2] => 22歳 [3] => 女 ) [4] => Array ( [0] => 5 [1] => ホゲ子 [2] => 21歳 [3] => 女 ) ) こんにちはホゲ太
配列の中に配列という風に色々な説明がされます。
配列はタンスに例えましたが、タンスの中に小物を小分けしたというとややこしいですが
今回は名簿にするとわかりやすいです
$meibという名前の名簿です。
1,ホゲ雄,23歳,男
2,ホゲ太,25歳,男
3,ホゲ美,22歳,女
4,ホゲ江,22歳,女
5,ホゲ子,21歳,女
ホゲ雄の名簿は$meib[0]へ格納されています。
ホゲ美の名簿は$meib[2]へ格納されています。
ホゲ太の年齢が知りたいときには名簿の二行目 $meib[1] を呼び出し
$meib[1][2]
名簿の二行目の3項目目年齢を呼び出します。
似たような動きにブログや掲示板のログ保存があります。
ナンバー、名前、コメント、投稿時間
といった感じでよく使われます。
print_r();
配列の中身を出力します。
通常の配列
$test[0] = ali; $test[1] = ce; $test[3] = usa;
結果
Array ( [0] => ali [1] => ce [2] => usa )
連想配列
$test[fax] = ok; $test[tel] = but; $test[box] = yo;
Array ( [fax] => ok [tel] => but [box] => yo )
配列操作
- array_change_key_case — 配列のすべてのキーの大文字小文字を変更する
- array_chunk — 配列を分割する
- array_column — 入力配列から単一のカラムの値を返す
- array_combine — 一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成する
- array_count_values — 配列の値の数を数える
- array_diff_assoc — 追加された添字の確認を含めて配列の差を計算する
- array_diff_key — キーを基準にして配列の差を計算する
- array_diff_uassoc — ユーザーが指定したコールバック関数を利用し、 追加された添字の確認を含めて配列の差を計算する
- array_diff_ukey — キーを基準にし、コールバック関数を用いて配列の差を計算する
- array_diff — 配列の差を計算する
- array_fill_keys — キーを指定して、配列を値で埋める
- array_fill — 配列を指定した値で埋める
- array_filter — コールバック関数を使用して、配列の要素をフィルタリングする
- array_flip — 配列のキーと値を反転する
- array_intersect_assoc — 追加された添字の確認も含めて配列の共通項を確認する
- array_intersect_key — キーを基準にして配列の共通項を計算する
- array_intersect_uassoc — 追加された添字の確認も含め、コールバック関数を用いて 配列の共通項を確認する
- array_intersect_ukey — キーを基準にし、コールバック関数を用いて 配列の共通項を計算する
- array_intersect — 配列の共通項を計算する
- array_key_exists — 指定したキーまたは添字が配列にあるかどうかを調べる
- array_keys — 配列のキーすべて、あるいはその一部を返す
- array_map — 指定した配列の要素にコールバック関数を適用する
- array_merge_recursive — 二つ以上の配列を再帰的にマージする
- array_merge — ひとつまたは複数の配列をマージする
- array_multisort — 複数または多次元の配列をソートする
- array_pad — 指定長、指定した値で配列を埋める
- array_pop — 配列の末尾から要素を取り除く
- array_product — 配列の値の積を計算する
- array_push — 一つ以上の要素を配列の最後に追加する
- array_rand — 配列から一つ以上の要素をランダムに取得する
- array_reduce — コールバック関数を用いて配列を普通の値に変更することにより、配列を再帰的に減らす
- array_replace_recursive — 渡された配列の要素を再帰的に置き換える
- array_replace — 渡された配列の要素を置き換える
- array_reverse — 要素を逆順にした配列を返す
- array_search — 指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す
- array_shift — 配列の先頭から要素を一つ取り出す
- array_slice — 配列の一部を展開する
- array_splice — 配列の一部を削除し、他の要素で置換する
- array_sum — 配列の中の値の合計を計算する
- array_udiff_assoc — データの比較にコールバック関数を用い、 追加された添字の確認を含めて配列の差を計算する
- array_udiff_uassoc — データと添字の比較にコールバック関数を用い、 追加された添字の確認を含めて配列の差を計算する
- array_udiff — データの比較にコールバック関数を用い、配列の差を計算する
- array_uintersect_assoc — データの比較にコールバック関数を用い、 追加された添字の確認も含めて配列の共通項を計算する
- array_uintersect_uassoc — データと添字の比較に個別のコールバック関数を用い、 追加された添字の確認も含めて配列の共通項を計算する
- array_uintersect — データの比較にコールバック関数を用い、配列の共通項を計算する
- array_unique — 配列から重複した値を削除する
- array_unshift — 一つ以上の要素を配列の最初に加える
- array_values — 配列の全ての値を返す
- array_walk_recursive — 配列の全ての要素に、ユーザー関数を再帰的に適用する
- array_walk — 配列の全ての要素にユーザー定義の関数を適用する
- array — 配列を生成する
- arsort — 連想キーと要素との関係を維持しつつ配列を逆順にソートする
- asort — 連想キーと要素との関係を維持しつつ配列をソートする
- compact — 変数名とその値から配列を作成する
- count — 変数に含まれるすべての要素、 あるいはオブジェクトに含まれる何かの数を数える
- current — 配列内の現在の要素を返す
- each — 配列から現在のキーと値のペアを返して、カーソルを進める
- end — 配列の内部ポインタを最終要素にセットする
- extract — 配列からシンボルテーブルに変数をインポートする
- in_array — 配列に値があるかチェックする
- key_exists — array_key_exists のエイリアス
- key — 配列からキーを取り出す
- krsort — 配列をキーで逆順にソートする
- ksort — 配列をキーでソートする
- list — 配列と同様の形式で、複数の変数への代入を行う
- natcasesort — 大文字小文字を区別しない”自然順”アルゴリズムを用いて配列をソートする
- natsort — “自然順”アルゴリズムで配列をソートする
- next — 配列の内部ポインタを進める
- pos — current のエイリアス
- prev — 内部の配列ポインタをひとつ前に戻す
- range — ある範囲の整数を有する配列を作成する
- reset — 配列の内部ポインタを先頭の要素にセットする
- rsort — 配列を逆順にソートする
- shuffle — 配列をシャッフルする
- sizeof — count のエイリアス
- sort — 配列をソートする
- uasort — ユーザー定義の比較関数で配列をソートし、連想インデックスを保持する
- uksort — ユーザー定義の比較関数を用いて、キーで配列をソートする
- usort — ユーザー定義の比較関数を使用して、配列を値でソートする
ファイル操作等
file()
変数に代入できる。
ファイルを配列に読み込みます。
フルパスでURLも読み込めます。
file_get_contents()
変数に代入できる。フルパスでURLも読み込めます。
file()と似ていますが配列ではなく文字列として表示します。
ファイル操作
ファイルオープン時のモードには以下のようなものです。
モード 内容
“r” 読み取り専用
“r+” 読み取りと書き込み
“w” 書き込み専用(ファイルがなければ自動生成)
“w+” 書き込みと読み込み(ファイルがなければ自動生成)
“a” 追記専用(ファイルがなければ自動生成)
“a+” 追記と読み込み(ファイルがなければ自動生成)
ユーザー定義関数
function 関数名 (引数){
・・・・・・・・・
}
function zeikomi($nedan) { $nedan = $nedan * 1.08; return $nedan; } print (zeikomi(100)); ?>
結果: 108
環境変数
$ip = $_SERVER[“REMOTE_ADDR”] ;
IPを取得
$host = gethostbyaddr($ip);
ホスト名取得
$ua = getenv(“HTTP_USER_AGENT”);
ユーザーエージェント取得
条件分岐
「if」「else」
if(条件){
正しかったとき実行
}else{
間違えてたとき実行
}
}else{ }は消して正しかったときだけ実行
間違えてたときは実行しないということもできます。
「switch」
switchは条件を指定し、それがcaseの後の値に合えばその後に続く処理を実行します。
合致した箇所以外はすべて行ってしまうのでbreak;で処理を終了させます。
switch (true) {
case $i === 2:
$message = ‘$iは2です。’;
break;
case $i === 4:
$message = ‘$iは4です。’;
break;
case $i === 5:
$message = ‘$iは5です。’;
break;
default:
$message = ‘$iは2,4,5以外です。’;
break;
}
break;
処理の停止
繰り返しの処理を途中で抜けたりする場合に使います。
繰り返し
日本語に直すと、$iは1で、10以下の間は1ずつ足しながら繰り返します。
while
$i = 1; while ($i < 10){ echo $i; $i++; }
結果:123456789
for
for ($i = 1; $i < 10; $i++) { echo $i; }
結果:123456789
foreach
for,whileと少し違って配列の要素の数だけループします。
foreach($body as $n) { }
$bodyが配列です。以前はwhileのほうが速いといわれていましたが
最近はforeachが速くなっているみたいです。
データの受け取り
$_POST[”];
フォームからPOSTしたデータを受け取ります
$_GET[”];
GETしたデータを受け取ります
例:no=100&r=10のようなURL
クッキー
$_COOKIE[ “クッキー名” ]
setcookie(クッキー名[,クッキーの値[,有効期限[,パス[,ドメイン[,セキュア]]]]])
いかがだったでしょうか?わりと重要度の高いものを選んでまとめたんですが
速習というには長くなりすぎましたwwなのである程度で切りましたw