1. nemui_

    No comment

    nemui_
Changes in body
Source | HTML | Preview
@@ -1,322 +1,325 @@
#はじめに
掲題について、最近離れてしまっていたので、”おさらい”の意味も込めて、簡単にまとめてみました。
-気づいたら結構なボリュームになってしまいましたが・・・これからPHPを始める人の参考になれば幸いです。
+
+気づいたら結構なボリュームになってしまいましたが...これからPHPを始める人の参考になれば嬉しいです。
+
+もし間違っている点あればご指摘いただけると幸いです。
#基本編
PHPでプログラムを動かす為の基本です。サクッと覚えちゃいましょう。
##Hello World
```php
<?php
echo "Hello World";
?>
```
まずは、おなじみのこれ。
PHPは、`<?php`と`?>`の間に書かれたものが、プログラムとして実行されます。プログラムの終わりには`;`を付けます。
##コメント
```php
#1行コメント
//1行コメント
/*複数行コメント
複数行コメント */
```
全部で3種類あります。`/*複数行コメント*/`を使う場合、同じ形でコメントアウトをネストするとエラーになるので注意です。
##文字列の出力
```php
echo "こんにちは"; //こんにちは
print "こんにちは"; //こんにちは
```
`echo`もしくは`print`でブラウザに文字列を出力できます。
この2つの違いは、次の3つです。基本は`echo`で問題ないかと思います。
<b>1. `echo`はカンマ「,」区切りで複数の文字列を指定できるのに対し、`print`は出来ない</b>
```php
echo "Hello", "World"; //この構文はエラーが出ません
print "Hello", "World"; //この構文はエラーが出ます
```
<b>2.`print`は結果を返すのに対し、`echo`は返さない</b>
```php
$str = echo "Hello World"; //この構文はエラーが出ます
$str = print "Hello World"; //この構文はエラーが出ません
```
※結果を返さない分、わずかにecho()の方が早いようです。
##文字列
```php
echo "文字列";
echo `文字列`;
```
文字列は`"ダブルクォーテーション"`か`'シングルクォーテーション'`で囲むことで、扱うことができます。
この2つの違いは、変数が展開できるか否かです。変数については、この後で触れてます。
```php
$str = "太郎";
echo "私の名前は、$str"; //私の名前は、太郎
$str = "文字列";
echo `私の名前は、$str`; //私の名前は、$str
```
##ヒアドキュメント
```php
echo <<<EOD
ヒアドキュメントを使えば、長い文章を簡単に出力することができます。
連結文字やダブルクオーテーション使わずに済みます。
EOD;
/*
ヒアドキュメントを使えば、長い文章を簡単に出力することができます。 
連結文字やダブルクオーテーション使わずに済みます。
*/
```
ヒアドキュメントは、`<<<開始ID 文字列 終端ID;`で使うことができます。
IDでよく使われるのが、「EOM」「EOF」「EOD」ですが、「ABC」でも何でも構いません。
ちなみに、「EOM」は End Of Message、「EOF」は End Of File、「EOD」は End Of Document の略です。
##改行
```php
<html>
<head>
<title>PHPの基礎知識をまとめてみた</title>
</head>
<body>
<?php
echo "1行目:改行して出力<br />";
echo "2行目:改行後の文字列";
?>
</body>
</html>
<?php
echo "1行目\n";
echo "2行目";
?>
```
ブラウザ上での改行は、`<br />`と`HTMLタグ`を入れます。ソース上での改行は、`\n`と`特殊文字`を入れます。
##文字列のエスケープ
```php:非文字列エスケープの例
echo "<a href="http://php.net/manual/ja/index.php">PHPマニュアル</a>";
//Parse error: parse error, expecting `','' or `';'' in
```
これたど、`echo "文字列"`の括りの中にさらに`"`が入っている為、エラーが出ます。
これを回避するには、エスケープ文字`\`を使います。エスケープ文字は重複する`"`の前に付けます。
```php:文字列エスケープの例
echo "<a href=\"http://php.net/manual/ja/index.php\">PHPマニュアル</a>";
//PHPマニュアル
```
#変数編
変数というのは値を保持しておく箱だと思って下さい。
値を保持しておいて後から計算に使ったり、取り出して表示したりすることができます。
##変数
```php
$num = 1;
echo $num; //1
$str = "Hello World";
echo $str; //Hello World
```
変数は、`$変数名 = 値`で宣言します。ポイントは、変数の前に`$`を付けること。
ちなみにPHPでは型の定義を勝手にしてくれます。つまり、Javaみたいに型の定義を宣言する必要が無いです。
ただし、変数には[命名規則](http://php.net/manual/ja/language.variables.basics.php)があるので気を付けましょう。
##文字列と変数の結合
```php
$str = "文字列";
echo `私の名前は、`.$str; //私の名前は、太郎
```
文字列結合演算子`.` を使うことで、文字列と変数を結合できます。
##変数の参照渡し
```php:非参照渡しの例
$a = 1;
$b = $a;
$a = 2;
echo $b; //1
```
PHPが`$a`と`$b`を違う変数として扱っているため、`$a`の値を変更しても`$b`の値は元の「1」を保持したままです。
これを参照渡しを使うことで、`$a`と`$b`を「違う名前を持つ同じ変数」として扱えるようにできます。
参照渡しを使うにはアンパサンド`&`を使います。`&`を代入する方の変数の`$`前に付けます。
```php:参照渡しの例
$a = 1;
$b = &$a; //アンパサンドを使う
$a = 2;
echo $b; //2
```
##変数のスコープ
※関数を理解していないと躓くと思うので、とりあえずこういうのがあるんだ程度で覚えといて下さい。
```php
function outputInfo($name){
$pet = "猫"; //ローカルスコープ
echo $name."さんは".$pet."を飼っています”
}
outputInfo("山田");
echo $pet."は可愛いですね";
```
```php:出力結果
//山田さんは猫を飼っています
//undefined~ は可愛いですね
```
変数の使える範囲を`スコープ`と言います。
P関数内で作成した変数は、ローカルスコープと呼ばれ、その関数内でしか参照できません。
ローカル変数をグローバルスコープでも使えるようにするためには、グローバル宣言をする必要があります。
グローバル宣言は`global 変数名;`で宣言することができます。
```php
function outputInfo($name){
global $pet;
$pet = "猫";
echo $name."さんは".$pet."を飼っています”
}
outputInfo("山田");
echo $pet."は可愛いですね";
```
```php:出力結果
// 山田さんは猫を飼っています
// 猫は可愛いですね
```
#定数編
定数というのは、変数に対して変更してはいけない値を保持しておくものです。消費税とか円周率とか。
##定数
```php
define(`PI`, 3.14);
echo PI; //3.14
```
定数は、`define`で宣言します。変数と違って`$`を付ける必要はありません。
慣習的に、定数は常に大文字で表記されます。
ちなみに、定数のスコープはグローバルなので、PHPスクリプト中どこでも定数にアクセスできます。
#演算子編
演算子というのは、プログラミングで計算や判定をしたりするのに使われる記号のことです。
##算術演算子
```php
$a + $b // 加算
$a - $b // 減算
$a * $b // 乗算
$a / $b // 除算
$a % $b // $a を $b で割った余り
```
小学校で習った算数と同じですね。数値を足したり引いたりするための演算子です。
##加算子(インクリメント)/減算子(デクリメント)
```php
$a++ // $a の値をひとつ加算する(変数を返し、変数に+1を加えます。)
$a-- // $a の値をひとつ減算する(変数を返し、変数から-1を引きます。)
++$a // $a の値をひとつ加算する(変数に+1を加え、変数を返します)
--$a // $a の値をひとつ減算する(変数から-1を引き、変数を返します)
```
数の値を「+1」「-1」にする演算子です。インクリメント演算子とデクリメント演算子と言います。
インクリメント/デクリメント演算子を変数の前/後に付けた場合で挙動が異なるので、注意しましょう。
##文字列演算子
```php
$a . $b // 文字列 $a と文字列 $b を連結
```
文字列を結合する演算子です。連結したい文字列や変数の間にドット「.」を挟みます。
##代入演算子
```php
$a = $b // 代入
$a += $b // $a = $a + $b に同じ
$a -= $b // $a = $a - $b に同じ
$a *= $b // $a = $a * $b に同じ
$a /= $b // $a = $a / $b に同じ
$a %= $b // $a = $a % $b に同じ
$a &= $b // $a = $a & $b に同じ
$a |= $b // $a = $a | $b に同じ
$a ^= $b // $a = $a ^ $b に同じ
$a <<= $b // $a = $a << $b に同じ
$a >>= $b // $a = $a >> $b に同じ
$a .= $b // $a = $a . $b に同じ
```
変数に値を代入する演算子です。
##比較演算子
```php
$a == $b // $a と $b が等しい
$a === $b // $a と $b が等しい(型を厳密に比較する)
$a != $b // $a と $b が等しくない
$a <> $b // $a と $b が等しくない
$a !== $b // $a と $b が等しくない(型を厳密に比較する)
$a < $b // $a が $b よりも小さい
$a > $b // $a が $b よりも大きい
$a <= $b // $a が $b 以下である
$a >= $b // $a が $b 以上である
```
後で出てきますが、if、for、while の条件分岐に利用する演算子です。
##論理演算子
```php
$a and $b // $a かつ $b が TRUE であれば
$a && $b // $a かつ $b が TRUE であれば
$a or $b // $a または $b が TRUE であれば
$a || $b // $a または $b が TRUE であれば
!$a // $a が FALSE であれば
$a xor $b // $a まはた $b どちらか片方のみが TRUE であれば
```
論理演算を行うための演算子です。
#配列編
配列というのは、複数の値を入れられる箱だと思って下さい。
変数は1度に1つの値しか保持できませんが、配列を使えば1つの変数に複数の異なる値を保持する事ができます。
##配列
```php
$fruit = array["りんご","いちご","ぶどう”];
echo $fruit[0]; //りんご
echo $fruit[1]; //いちご
echo $fruit[2]; //ぶどう
```
変数では1つの変数に1つの値しか保持(代入)する事ができませんが、配列を使えば1つの変数に複数の値を保持する事ができます。
配列は、`array[値1,値2,...]`で使うことが出来ます。[]の中は、0,1,2...の順番で割り振られています。
##連想配列
```php
$fruit = array[
"apple" => "りんご",
"strawberry" => "いちご",
"grape" => "ぶどう",
];
echo $fruit["apple"]; //りんご
echo $fruit["strawberry"]; //いちご
echo $fruit["grape"]; //ぶどう
```
配列では、[ ]の中は、0,1,2...の数字の順番でしたが、数字ではなく文字のキーをもとにして値を設定した配列を連想配列と呼びます。
連想配列は、`配列名 = array[キー1 => 値1, キー2 => 値2, ... ];`で使うことができます。
##制御構造編(Comming soon...)