LoginSignup
2
3

More than 3 years have passed since last update.

生PHPについて知識を資産化していく①

Last updated at Posted at 2021-03-29

前提として

  • 自分が勉強してきた知識を保存するために書いています。
  • 本当に初歩的な事から書いていってます。
  • 万が一間違っている可能性もございますので、その時はご指摘頂ければ嬉しいです。
  • 常時更新していく予定です。
  • アウトプット用ですので、MAMPを使用していきます。
PHPについての記事はこちらから

ブラウザに「test」表示させる

index.php
<?php

echo 'test';

?>

現在のPHPのバージョンと設定一覧を表示させる

index.php
<?php

phpinfo();

?>

数字と文字

  • 数字は半角で入力する
  • 文字はシングル(またはダブル)クウォーテーションをつける
index.php
<?php

echo 123; → 数字

echo('こんにちは') //文字
echo("こんにちは") //文字

?>

変数

「$」マークで書き始める

index.php
<?php

$test = 123; //「123」という数字が$testに代入される
$tsuishi = 'こんにちは'; //「こんにちは」という文字が$tsuishiに代入される

echo $test; //ブラウザに 123 と表示される
echo $tsuishi; //ブラウザに こんにちは と表示される

?>

※同じ変数は後から書いたものが上書きされる

index.php
<?php

$test = 123;
$test = 456;

echo $test; //ブラウザに 456 と表示される

?>

型を確認する

var_dump()

index.php
<?php

$test = 123;
$tsuishi = 'こんにちは';

var_dump($tsuishi); //$tsuishiの型を確認する → string(15)と表示される
var_dump($test); //$testの型を確認する → int(123)と表示される

?>

定数

変わらない文字、数
同じ定数があっても上書きされない。

index.php
<?php

const MAX = 10;
const MAX = 20;

echo MAX; //10と表示

?>

配列(1行バージョン)

※プログラミングは0から始まるので、

  • 0の場合1
  • 1の場合2
  • 2の場合3
index.php
<?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列バージョン)

index.php
<?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"];

index.php
<?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組それぞれの生徒の特徴を記述する

index.php
<?php

$array_member_2 = [
  '本田' => [
    'height' => 170,
    'hobby' => 'サッカー'
  ],
  '香川' => [
    'height' => 165,
    'hobby' => 'サッカー'
  ]
];

//香川の身長を出したい時
echo $array_member_2['香川']['height']; //165と表示

?>

各組それぞれの生徒の特徴を記述する

index.php
<?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ずつ増える)

index.php
<?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文

index.php
<?php

if (条件) {
  条件が真なら実行
}

//例
$height = 90;

if ($height == 90) {
  echo '身長は' . $height . 'cmです'; //身長は90cmです と表示
}

?>

else文

index.php
<?php

if (条件) {
  条件が真なら実行
} else {
  条件が偽なら実行
}

//例
$height = 90;

if ($height === 95) {
  echo '身長は' . $height . 'cmです';
} else {
  echo '身長は' . $height . 'cmではありません'; //身長は90cmではありません と表示
}


?>

elseif文

index.php
<?php

if (条件) {
  条件が真なら実行
} elseif{
  上記条件が偽でこちらが真なら実行
} else {
  条件が偽なら実行
}

//例
$signal = 'yellow';

if ($signal === 'red') {
  echo '止まれ';
} elseif ($signal === 'yellow') {
  echo '一旦停止';
} else {
  echo '進め';
}
//一旦停止 と表示

?>

if文の中にif文

index.php
<?php
//例
$speed = 80;

if ($signal === 'blue') {
  if ($speed >= 80) {
    echo 'スピード違反'; //スピード違反 と表示
  }
}

?>

〜ではない(!==)

!= → ~ではない
!== → 型が同じかどうかも含め~ではない

//例

index.php
<?php

$height = 91;

if ($height !== 90) {
  echo '身長は90cmではありません。'; //身長は90cmではありません。 と表示
}

?>

データが入っているかどうか

※empty → データが空かどうか確認する

index.php
<?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(||)

index.php
<?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 '赤です'; //赤です と表示
}

?>

三項演算子

条件 ? 真 : 偽

index.php
<?php

//例
$math = 80;

$comment = $math > 80 ? 'good' : 'not good';

echo $comment; //not good と表示
?>

foreach

//複数の値
foreach(複数形 as 単数形)

index.php
<?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はサッカーです と表示

?>

多段階の配列を展開

index.php
<?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++) {
  処理
}
index.php
<?php
//例
for($i = 0; $i < 10; $i++) {
  echo $i;
}
//0123456789 と表示

?>
index.php
<?php
//break
//例(5になったら止める)

for($i = 0; $i < 10; $i++) {

  if ($i === 5) {
    break;
  }
  echo $i;
}
//01234 と表示

?>
index.php
<?php
//continue
//例(5をスキップする)

for($i = 0; $i < 10; $i++) {

  if ($i === 5) {
    continue;
  }
  echo $i;
}
//01234 と表示

?>

while文

繰り返す数が決まっていない

index.php
<?php

$j = 0;
while($j < 5) {
  echo $j;
  $j++;
}
//01234 と表示

?>

switch文

  • if文の方が見やすいので基本はif文を使うようにする
  • caseの後にbreakを入れないとそのまま処理が走ってしまうので入れるようにする
  • どれにも当てはまらない場合は default となる
index.php
<?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 戻り値;
}
index.php
<?php
//インプット引数 なし
//アウトプット戻り値 なし

function test() {
  echo 'テスト';
}

test();
//テスト と表示

?>
index.php
<?php
//インプット引数 あり
//アウトプット戻り値 なし

function getComment($string) {
  echo $string;
}

getComment('コメント');
//コメント と表示

?>
index.php
<?php
//インプット引数 なし
//アウトプット戻り値 あり

function getNumberOfComment() {
  return 5;
}

var_dump(getNumberOfComment());
//int(5) と表示

$commentNumber = getNumberOfComment();

echo $commentNumber;
//5 と表示

?>
index.php
<?php
//引数 2つ
//アウトプット戻り値 あり

function sumPrice($int1, $int2) {
  $int3 = $int1 + $int2;
  return $int3;
}

$total = sumPrice(3, 5);

echo $total;
//8 と表示

?>

文字列関数

index.php
<?php
//文字列の長さ

$text = 'abc';

echo strlen($text);
//3 と表示

?>
index.php
<?php
//日本語 SJIS, UTF-8 3〜6バイト(文字1文字で3バイト) → strlen

$text = 'あいうえお';

echo strlen($text);
//15 と表示

?>
index.php
<?php
//マルチバイト → 単純に日本語の文字数(mb_strlen)

$text = 'あいうえお';

echo mb_strlen($text);
//5 と表示

?>
index.php
<?php
//文字列の置換 → str_replace()

$str = '文字列を置換します';

echo str_replace('置換', 'ちかん', $str);
//文字列をちかんします と表示

?>
index.php
<?php
//指定文字列で分割 → explode()

$str_2 = '指定文字列で、分割します';

echo '<pre>';
var_dump(explode('、', $str_2)); //「、」で分割する
echo '</pre>';



array(2) {
  [0]=>
  string(18) "指定文字列で"
  [1]=>
  string(15) "分割します"
}

?>
index.php
<?php
//正規表現 → preg_match()
//文字列かどうか, 数字かどうか, 郵便番号, メールアドレスかどうかを確認する

preg_match('/文字列/, $str_3');

?>

詳しくはこちらをご確認ください
正規表現パターンに使用可能な修飾子
webdesign leaves

index.php
<?php
//指定文字列から文字列を取得する → substr()
//文字化けしないように取得する → mb_substr()

echo substr('abcde', 1);
//bcde と表示

echo mb_substr('あいう', 2);
//う と表示

?>

配列の関数(array)

index.php
<?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) と表示

?>

変数のスコープ

有効範囲
例:
+ グローバル = 全世界
+ ローカル = それぞれ

index.php
<?php

$globalValiable = 'グローバル変数です';

function checkScope() {
  $localValiable = 'ローカル変数です';
  echo $localValiable;
  (関数の中で$globalValiableを指定しても使えない)

 //どうしても関数の外にあるグローバル変数を使う場合は、globalと前につける
 global $globalValiable;
  echo $globalValiable; //グローバル変数です と表示

}

echo $globalValiable; //グローバル変数です と表示
echo $localValiable; //表示されない

checkScope(); //ローカル変数です と表示

?>

※globalというキーワードを使うことはほとんどない

グローバル変数を使いたい場合は、インプットを引数に書くようにするとスマートに書ける

index.php
<?php

$globalValiable = 'グローバル変数です';

function checkScope($str) {
  $localValiable = 'ローカル変数です';
  echo $str;
}

echo $globalValiable;
echo $localValiable;

checkScope($globalValiable); //グローバル変数です と表示

?>

ファイルの読み込み

require(); require_once(); //エラー

include(); include_once(); //警告
commom.php
<?php

$commonVariable = "共通の変数です";

function commonTest() {
  echo '外部ファイルの関数です';
}
?>
<?php

require 'common.php';

echo $commonVariable; //共通の変数です と表示

commonTest(); //外部ファイルの関数です と表示

?>

マジック定数

  • __DIR__ ← 現在のファイルの絶対パスを表示する
  • __FILE__ ←現在のファイルを表す
index.php
<?php

__DIR__; //例:/Applications/MAMP/htdocs/***/ の中にファイルがあると判断できる

__FILE__; //例:/Applications/MAMP/htdocs/***/index.php のファイルだと判断できる

?>
PHPについての記事はこちらから
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3