前提として
- 自分が勉強してきた知識を保存するために書いています。
- 本当に初歩的な事から書いていってます。
- 万が一間違っている可能性もございますので、その時はご指摘頂ければ嬉しいです。
- 常時更新していく予定です。
- アウトプット用ですので、MAMPを使用していきます。
#####PHPについての記事はこちらから
ブラウザに「test」表示させる
<?php
echo 'test';
?>
現在のPHPのバージョンと設定一覧を表示させる
<?php
phpinfo();
?>
数字と文字
- 数字は半角で入力する
- 文字はシングル(またはダブル)クウォーテーションをつける
<?php
echo 123; → 数字
echo('こんにちは') //文字
echo("こんにちは") //文字
?>
変数
「$」マークで書き始める
<?php
$test = 123; //「123」という数字が$testに代入される
$tsuishi = 'こんにちは'; //「こんにちは」という文字が$tsuishiに代入される
echo $test; //ブラウザに 123 と表示される
echo $tsuishi; //ブラウザに こんにちは と表示される
?>
※同じ変数は後から書いたものが上書きされる
<?php
$test = 123;
$test = 456;
echo $test; //ブラウザに 456 と表示される
?>
型を確認する
var_dump()
<?php
$test = 123;
$tsuishi = 'こんにちは';
var_dump($tsuishi); //$tsuishiの型を確認する → string(15)と表示される
var_dump($test); //$testの型を確認する → int(123)と表示される
?>
定数
変わらない文字、数
同じ定数があっても上書きされない。
<?php
const MAX = 10;
const MAX = 20;
echo MAX; //10と表示
?>
##配列(1行バージョン)
※プログラミングは0から始まるので、
- 0の場合1
- 1の場合2
- 2の場合3
<?php
$array = [1, 2, 3];
echo $array[1]; //2と表示
//中身を全部みたい場合
echo '<pre>'; //改行して表示させる
var_dump($array);
echo '</pre>';
↓
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
?>
配列(2行3列バージョン)
<?php
$array_2 = [
['赤', '青', '黄'],
['緑', '紫', '黒']
];
echo '<pre>';
var_dump($array_2);
echo '</pre>';
↓
array(2) { //[0],[1]の2つの配列がある
[0]=>
array(3) { //[0]の中に配列が3つある
[0]=>
string(3) "赤"
[1]=>
string(3) "青"
[2]=>
string(3) "黄"
}
[1]=>
array(3) { //[1]の中に配列が3つある
[0]=>
string(3) "緑"
[1]=>
string(3) "紫"
[2]=>
string(3) "黒"
}
}
// 紫を出したい場合
echo $array_2[1][1]; //[1]の配列の中の[1]の紫を出力する
?>
連想配列
配列と書き方が違う。
配列
数字(順番固定)と値がセット。
$array[1];
連想配列
キーと値がセット。
キー => 値
key => value
$array["key"];
<?php
$array_member = [
'name' => '本田',
'height' => 170,
'hobby' => 'サッカー'
];
echo $array_member['hobby']; //サッカーと表示
echo '<pre>';
var_dump($array_member);
echo '</pre>';
↓
array(3) {
["name"]=>
string(6) "本田"
["height"]=>
int(170)
["hobby"]=>
string(12) "サッカー"
}
?>
※(例)学校に例えて考えてみる
2組それぞれの生徒の特徴を記述する
<?php
$array_member_2 = [
'本田' => [
'height' => 170,
'hobby' => 'サッカー'
],
'香川' => [
'height' => 165,
'hobby' => 'サッカー'
]
];
//香川の身長を出したい時
echo $array_member_2['香川']['height']; //165と表示
?>
各組それぞれの生徒の特徴を記述する
<?php
$array_member_3 = [
'2組' => [
'本田' => [
'height' => 170,
'hobby' => 'サッカー'
],
'香川' => [
'height' => 165,
'hobby' => 'サッカー'
]
],
'3組' => [
'長友' => [
'height' => 160,
'hobby' => 'サッカー'
],
'乾' => [
'height' => 168,
'hobby' => 'サッカー'
]
]
];
// 3組の長友のheightを出したい時
echo $array_member_3['2組']['長友']['height']; //160と表示
?>
このように段階で分けていくことにより、
クラス・組・学年・学校・都道府県などで分けてデータを引っ張ってこれる
演算子(計算や判定)抜粋
四則演算子 (+, -, *, /, %)
比較演算子 (>, >=, +=, ===, !==)
論理演算子 (and, &&, or, ||, xor)
!= nullや、!= emptyはよく使う
== は使わない === を使う
//== → 一致
//=== → 型も一致
++ でインクリメント (1ずつ増える)
<?php
$test_1 = 7;
$test_2 = 3;
$test_3 = $test_1 + $test_2;
$test_4 = $test_1 - $test_2;
$test_5 = $test_1 * $test_2;
$test_6 = $test_1 / $test_2;
$test_7 = $test_1 % $test_2;
echo $test_3; //4と表示
echo $test_4; //4と表示
echo $test_5; //21と表示
echo $test_6; //2.33333333...と表示
echo $test_7; //1と表示
?>
条件分岐
プログラムが得意なもの
条件分岐(信号機など)と繰り返し
if文
<?php
if (条件) {
条件が真なら実行
}
//例
$height = 90;
if ($height == 90) {
echo '身長は' . $height . 'cmです'; //身長は90cmです と表示
}
?>
else文
<?php
if (条件) {
条件が真なら実行
} else {
条件が偽なら実行
}
//例
$height = 90;
if ($height === 95) {
echo '身長は' . $height . 'cmです';
} else {
echo '身長は' . $height . 'cmではありません'; //身長は90cmではありません と表示
}
?>
elseif文
<?php
if (条件) {
条件が真なら実行
} elseif{
上記条件が偽で、こちらが真なら実行
} else {
条件が偽なら実行
}
//例
$signal = 'yellow';
if ($signal === 'red') {
echo '止まれ';
} elseif ($signal === 'yellow') {
echo '一旦停止';
} else {
echo '進め';
}
//一旦停止 と表示
?>
if文の中にif文
<?php
//例
$speed = 80;
if ($signal === 'blue') {
if ($speed >= 80) {
echo 'スピード違反'; //スピード違反 と表示
}
}
?>
〜ではない(!==)
!= → ~ではない
!== → 型が同じかどうかも含め~ではない
//例
<?php
$height = 91;
if ($height !== 90) {
echo '身長は90cmではありません。'; //身長は90cmではありません。 と表示
}
?>
データが入っているかどうか
※empty → データが空かどうか確認する
<?php
//例
$test = '';
if (empty($test)) {
echo '変数は空です'; //変数は空です と表示
}
//例
$test = '1'; //文字
if (!empty($test)) {
echo '変数は空ではありません'; //変数は空ではありません と表示
}
//例
$test = '1';
if (empty($test)) {
echo '変数は空です';
} else {
echo '変数は空ではありません'; //変数は空ではありません と表示
}
※elseを使うとスマートではないので、if (!empty($test))の書き方が良い。
?>
AND(&&) と OR(||)
<?php
//例 AND(&&)
$signal_1 = 'red';
$signal_2 = 'blue';
if ($signal_1 === 'red' && $signal_2 === 'blue') {
echo '赤と青です'; //赤と青です と表示
}
//例 OR(||)
$signal_1 = 'red';
$signal_2 = 'yellow';
if ($signal_1 === 'red' || $signal_2 === 'blue') {
echo '赤です'; //赤です と表示
}
?>
三項演算子
条件 ? 真 : 偽
<?php
//例
$math = 80;
$comment = $math > 80 ? 'good' : 'not good';
echo $comment; //not good と表示
?>
foreach
//複数の値
foreach(複数形 as 単数形)
<?php
//例
$members = [
'name' => '本田',
'height' => 170,
'hobby' => 'サッカー'
];
//valueのみ表示
foreach($members as $member) {
echo $member; //本田170サッカー と表示
}
//keyとvalueそれぞれ表示
foreach($members as $key => $value) {
echo $key . 'は' . $value . 'です';
}
//nameは本田ですheightは170ですhobbyはサッカーです と表示
?>
多段階の配列を展開
<?php
//例
$members_2 = [
'本田' => [
'height' => 170,
'hobby' => 'サッカー'
],
'香川' => [
'height' => 165,
'hobby' => 'サッカー'
],
];
foreach($members_2 as $member_1) {
foreach($member_1 as $member => $value) {
echo $member . 'は' . $value . 'です';
}
}
//heightは170ですhobbyはサッカーですheightは165ですhobbyはサッカーです と表示
?>
繰り返し文
for, while
for文()
繰り返す数が決まっている
//処理の例
for($i = 0, $i < 10; $i++) {
処理
}
<?php
//例
for($i = 0; $i < 10; $i++) {
echo $i;
}
//0123456789 と表示
?>
<?php
//break
//例(5になったら止める)
for($i = 0; $i < 10; $i++) {
if ($i === 5) {
break;
}
echo $i;
}
//01234 と表示
?>
<?php
//continue
//例(5をスキップする)
for($i = 0; $i < 10; $i++) {
if ($i === 5) {
continue;
}
echo $i;
}
//01234 と表示
?>
while文
繰り返す数が決まっていない
<?php
$j = 0;
while($j < 5) {
echo $j;
$j++;
}
//01234 と表示
?>
switch文
- if文の方が見やすいので基本はif文を使うようにする
- caseの後にbreakを入れないとそのまま処理が走ってしまうので入れるようにする
- どれにも当てはまらない場合は default となる
<?php
$data = 1;
switch($data) {
case 1:
echo '1です';
break;
case 2:
echo '2です';
break;
case 3:
echo '3です';
break;
default:
echo '1〜3ではありません';
}
//1です と表示
?>
関数
関数は2種類
- 組み込み関数 → 準備してある関数
- ユーザー定義関数 → 自由に作れる関数
組み込み関数に関してはこちら
関数リファレンス
function test(引数) {
//処理
return 戻り値;
}
<?php
//インプット引数 なし
//アウトプット戻り値 なし
function test() {
echo 'テスト';
}
test();
//テスト と表示
?>
<?php
//インプット引数 あり
//アウトプット戻り値 なし
function getComment($string) {
echo $string;
}
getComment('コメント');
//コメント と表示
?>
<?php
//インプット引数 なし
//アウトプット戻り値 あり
function getNumberOfComment() {
return 5;
}
var_dump(getNumberOfComment());
//int(5) と表示
$commentNumber = getNumberOfComment();
echo $commentNumber;
//5 と表示
?>
<?php
//引数 2つ
//アウトプット戻り値 あり
function sumPrice($int1, $int2) {
$int3 = $int1 + $int2;
return $int3;
}
$total = sumPrice(3, 5);
echo $total;
//8 と表示
?>
文字列関数
<?php
//文字列の長さ
$text = 'abc';
echo strlen($text);
//3 と表示
?>
<?php
//日本語 SJIS, UTF-8 3〜6バイト(文字1文字で3バイト) → strlen
$text = 'あいうえお';
echo strlen($text);
//15 と表示
?>
<?php
//マルチバイト → 単純に日本語の文字数(mb_strlen)
$text = 'あいうえお';
echo mb_strlen($text);
//5 と表示
?>
<?php
//文字列の置換 → str_replace()
$str = '文字列を置換します';
echo str_replace('置換', 'ちかん', $str);
//文字列をちかんします と表示
?>
<?php
//指定文字列で分割 → explode()
$str_2 = '指定文字列で、分割します';
echo '<pre>';
var_dump(explode('、', $str_2)); //「、」で分割する
echo '</pre>';
↓
array(2) {
[0]=>
string(18) "指定文字列で"
[1]=>
string(15) "分割します"
}
?>
<?php
//正規表現 → preg_match()
//文字列かどうか, 数字かどうか, 郵便番号, メールアドレスかどうかを確認する
preg_match('/文字列/, $str_3');
?>
詳しくはこちらをご確認ください
正規表現パターンに使用可能な修飾子
webdesign leaves
<?php
//指定文字列から文字列を取得する → substr()
//文字化けしないように取得する → mb_substr()
echo substr('abcde', 1);
//bcde と表示
echo mb_substr('あいう', 2);
//う と表示
?>
配列の関数(array)
<?php
//配列に配列を追加する(array_push)
$array = ['りんご', 'みかん'];
array_push($array, 'ぶどう', 'なし');
echo '<pre>';
var_dump($array);
echo '</pre>';
↓
array(4) {
[0]=>
string(9) "りんご"
[1]=>
string(9) "みかん"
[2]=>
string(9) "ぶどう"
[3]=>
string(6) "なし"
}
//ぶどうとなしが追加される
?>
PHPの配列関数に関してはこちら
図解でわかるPHP配列関数一覧
###関数名について
キャメルケースかスネークケースで関数名をつける。
//キャメルケース
checkPostalCode() → 最初の英単語の頭文字は小文字、次の英単語から頭文字は大文字で書く
//スネークケース
check_postal_code() → 英単語ごとにアンダーバーで区切る
※基本的にはスッキリしているキャメルケースで書く!!
##組み込み関数
<?php
//郵便番号のチェック
$postalCode = '123-4567';
function checkPostalCode($str) {
// ハイフンをなくすために空にする
$replaced = str_replace('-', '', $str);
// ハイフンがなくなった後の文字の数を取る
$length = strlen($replaced);
var_dump($length); //int(7) と表示
if ($length === 7) {
return true;
}
return false;
}
var_dump(checkPostalCode($postalCode));
// bool(true) と表示
?>
##変数のスコープ
有効範囲
例:
- グローバル = 全世界
- ローカル = それぞれ
<?php
$globalValiable = 'グローバル変数です';
function checkScope() {
$localValiable = 'ローカル変数です';
echo $localValiable;
(関数の中で$globalValiableを指定しても使えない)
//どうしても関数の外にあるグローバル変数を使う場合は、globalと前につける
global $globalValiable;
echo $globalValiable; //グローバル変数です と表示
}
echo $globalValiable; //グローバル変数です と表示
echo $localValiable; //表示されない
checkScope(); //ローカル変数です と表示
?>
※globalというキーワードを使うことはほとんどない
グローバル変数を使いたい場合は、インプットを引数に書くようにするとスマートに書ける
<?php
$globalValiable = 'グローバル変数です';
function checkScope($str) {
$localValiable = 'ローカル変数です';
echo $str;
}
echo $globalValiable;
echo $localValiable;
checkScope($globalValiable); //グローバル変数です と表示
?>
##ファイルの読み込み
require(); require_once(); //エラー
include(); include_once(); //警告
<?php
$commonVariable = "共通の変数です";
function commonTest() {
echo '外部ファイルの関数です';
}
?>
<?php
require 'common.php';
echo $commonVariable; //共通の変数です と表示
commonTest(); //外部ファイルの関数です と表示
?>
##マジック定数
- __DIR__ ← 現在のファイルの絶対パスを表示する
- __FILE__ ←現在のファイルを表す
<?php
__DIR__; //例:/Applications/MAMP/htdocs/***/ の中にファイルがあると判断できる
__FILE__; //例:/Applications/MAMP/htdocs/***/index.php のファイルだと判断できる
?>
#####PHPについての記事はこちらから