元IT完全未経験者がPHPをわかりやすく解説します

phpプログラミング

おはこんにちばんは

どうも、まこってぃです

 

今回はPHPでできることを実際にプログラムを書いて実行して解説していきたいと思います

元IT完全未経験で習得したので、わからない人でもわかりやすい内容になっているかと思います

IDE(開発環境)はVSCodeを使用します

PHPのバージョンは8です

開発環境構築は下記のようにGoogleで調べてみてください

Mac:mac php mamp 環境構築

Windows:windows php mamp 環境構築

phpは.phpファイルを作成してプログラミングをしていきます

MAMPをインストールしたフォルダの中にhtdocsというフォルダがあるので、その中に.phpファイルを作成していきましょう

では早速学んでいきましょう

まこってぃがおすすめするプログラミングスクールはこちら

PHPの基礎を学んでアプリケーションを作る

MAMPとは

MAMPを使うとコマンドを実行することなくPHPが使える環境をすぐに作ることができます

MAMPは、MacまたはWindowsにインストールするだけで、ローカルのサーバー環境を作成することができます
WebサーバーとしてApacheまたはNginxが使用でき、PHP・MySQLも一緒に使えるようになります

MAMPは無料で、MAMP PROは有料です
本気で開発したい方は別ですが、独学で使うようであればMAMPで十分です

下記のリンクからダウンロードができます

ダウンロードはこちら

DB(データベース)とは

PHPでWebアプリケーションを開発するのであれば必須の知識です

DBとは、サーバ上で永続的にデータの保管ができるものです

データベースを使うと、大量のデータを扱えるようになるので、必ず習得しましょう

PHPの構文

基本的には下記が基本的な書き方になります

<?php

何らかの処理

?>

htmlファイルなどにphpのプログラムを書く時は終了タグが必要ですが、そうでない場合は省略可能です

では実際に試してみます

画面に「Hello World」と表示させてみます

serverを起動させて以下のアドレスにアクセスして確認してみます

http://localhost:8888/

ちなみに、計算させることも可能です

エラーの種類

プログラミングにはエラーがつきものでs

PHPではエラーレベルが4種類あります

  • Notice
    注意という種類です
    「致命的ではないけれど、エラーの原因になるかもしれない」という内容です
  • Warning
    Noticeより少し深刻な警告という内容です
    基本的に修正した方が良いです
  • Parse error
    PHP実行エンジンがプログラムを理解できない場合に起きるエラーです
    プログラムを実行する以前の問題で、プログラムの書き方が間違っていたりすると起こります
    修正しないとプログラムを実行できません
  • Fatal error
    致命的なエラーです
    修正しないとプログラムを実行できません

データ型

データ型とはデータの形式のことを言います

代表的なデータ型は5種類あります

  • 論理型
    booleanとも言います
    真偽値と言って、Yes・Noを表す型です
    Yesの場合は「True」、Noの場合は「False」となります
  • 整数型
    integerとも言います
    -3や5といった、小数点がつかない数字を扱う時に使用します
  • 浮動小数点数型
    float、doubleとも言います
    整数型の最大値よりも大きい値は自動的に浮動小数点型に変換されます
  • 文字列型
    stringとも言います
    文字の集まりのことを文字列と言います
    “や’で囲まれた文字のことを文字列だと思ってください
  • Null
    値をもたいない状態のことです

変数

変数とは「データの入れ物」です

入れるデータの型によって変数の型は変わります

変数の名前

変数は「$変数名」という形式で表します

変数名には「英数字、アンダースコア(_)」などを使用できますが、アンダースコア以外の記号は使用できません

また、先頭の文字は数字から始めることはできません

また、予約語と呼ばれるPHPがデフォルトで使用しているキーワード等も使用することができません

予約語

■キーワード

__halt_compilerabstractandarrayas
breakcallablecasecatchclass
cloneconstcontinuedeclaredefault
diedoechoelseelseif
emptyenddeclareendforendforeachendif
endswitchendwhileevalexitextends
finalfinallyforforeachfunction
globalgotoifimplementsinclude
include_onceinstanceofinsteadofinterfaceisset
listnamespaceneworprint
privateprotectedpublicrequirerequire_once
returnstaticswitchthrowtrait
tryunsetusevarwhile
xoryieldyield from__CLASS____DIR__
__FILE____FUNCTION____LINE____METHOD____NAMESPACE__
__TRAIT__

■定義済みのクラス

DirectorystdClass__PHP_Incomplete_Classself
staticparentExceptionErrorException
php_user_filterClosureGeneratorArithmeticError
AssertionErrorDivisionByZeroErrorErrorThrowable
ParseErrorTypeError

■定義済みの定数

PHP_VERSIONPHP_MAJOR_VERSIONPHP_MINOR_VERSION
PHP_RELEASE_VERSIONPHP_VERSION_IDPHP_EXTRA_VERSION
PHP_ZTSPHP_DEBUGPHP_MAXPATHLEN
PHP_OSPHP_OS_FAMILYPHP_SAPI
PHP_EOLPHP_INT_MAXPHP_INT_MIN
PHP_INT_SIZEPHP_FLOAT_DIGPHP_FLOAT_EPSILON
PHP_FLOAT_MINPHP_FLOAT_MAXDEFAULT_INCLUDE_PATH
PEAR_INSTALL_DIRPEAR_EXTENSION_DIRPHP_EXTENSION_DIR
PHP_PREFIXPHP_BINDIRPHP_BINARY
PHP_MANDIRPHP_LIBDIRPHP_DATADIR
PHP_SYSCONFDIRPHP_LOCALSTATEDIRPHP_CONFIG_FILE_PATH
PHP_CONFIG_FILE_SCAN_DIRPHP_SHLIB_SUFFIXPHP_FD_SETSIZE
E_ERRORE_WARNINGE_PARSE
E_NOTICEE_CORE_ERRORE_CORE_WARNING
E_COMPILE_ERRORE_COMPILE_WARNINGE_USER_ERROR
E_USER_WARNINGE_USER_NOTICEE_DEPRECATED
E_USER_DEPRECATEDE_ALLE_STRICT
__COMPILER_HALT_OFFSET__TRUEFALSE
NULL

■その他の予約語

intfloatboolstring
truefalsenullvoid
iterableobject

上記の予約語は使用できないので、注意しましょう

変数への代入

変数に値を格納することを「代入」と言います

代入は「=」で行います

では実際にやってみましょう

htdocsフォルダの中に最初からあるindex.phpの中身を全て削除して次のように記載します

<?php
$name = "テスト 一郎";
echo "ようこそ" . $name . "さん";
上記を実行してみます
■実行結果

変数の中身も一緒に表示されました

結合演算子

結合演算子は左右の値を結合する役割をしています

出力の時だけでなく、変数に代入する時にも使用できます

実際に試してみましょう

<?php
$name = "テスト";
$name.="一郎";
echo$name;

実行してみます

■実行結果

ちゃんと結合されて表示されました

まこってぃがおすすめするプログラミングスクールはこちら

四則演算

演算演算子結果
加算+$a + $baとbの合計
減算$a – $baとbの差
乗算*$a * $baとbの積
除算/$a / $baをbで割った数
剰余%$a % $baをbで割った余り

では実際に試してみます

<?php
$a = 6;
$b = 3;
echo$a + $b."<br>";
echo$a - $b."<br>";
echo$a * $b."<br>";
echo$a / $b."<br>";
echo$a % $b."<br>";

■実行結果

論理演算子

論理演算子は「はい・いいえ」を表す型です

Trueなら「はい」、Falseなら「いいえ」となります

演算演算子結果
AND&&$a && $b$aと$bがtrueの時にtrue
OR||$a || $b$aまたは$bがtrueの時にtrue
NOT!!$a$aがfalseの時にtrue

実際に試してみます

<?php
$a = true;
$b = false;
$d = $a && $b;
var_dump($d);
$d = $a || $b;
var_dump($d);
$d = $a && $b;
var_dump(!$d);

■実行結果

条件分岐

if

「もし〜だったら」という制御を行います

例を挙げると、「もし会員が男だったら〜」や、「もし結果がOKだったら〜」といった感じです

ifの構文は下記になります

if (式) {

何らかの処理

}

式の評価結果がtrueだった場合、何らかの処理の部分の処理が行われます

もしfalseだった場合、処理は行われません

では実際に試してみます

<?php
$a = "OK";
if ($a == "OK") {
echo"結果はOKです";
}
■実行結果

else if

ifで条件を分けたい時、条件が複数ある場合もあります

そのような時にelse ifを使用します

例えば、「会員が男性だった場合、会員が女性だった場合」といった感じです

実際に試してみます

<?php
$a = "No";
if ($a == "OK") {
echo"結果はOKです";
} elseif ($a == "No") {
echo"結果はNoです";
}
■実行結果

else

ifの式にはelse ifの式にも当てはまらなかった場合に動く処理を記載します

実際にやってみます

<?php
$a = “Yes”;
if ($a == “OK”) {
echo”結果はOKです”;
} elseif ($a == “No”) {
echo”結果はNoです”;
} else {
echo”OKでもNoでもありません”;
}

■実行結果

比較演算子

名前結果
$a == $b等しい型の相互変換をした後で $a が $b に等しい時に true
$a === $b等しい$a が $b に等しく、および同じ型である場合に true 。
$a != $b等しくない型の相互変換をした後で $a が $b に等しくない場合に true
$a <> $b等しくない型の相互変換をした後で $a が $b に等しくない場合に true
$a !== $b等しくない$a が $b と等しくないか、同じ型でない場合に true 。
$a < $bより少ない$a が $b より少ない時に true
$a > $bより多い$a が $b より多い時に true
$a <= $bより少ないか等しい$a が $b より少ないか等しい時に true
$a >= $bより多いか等しい$a が $b より多いか等しい時に true
$a <=> $b宇宙船演算子$a が $b より大きいか、0か、0より小さい場合に、 それぞれ、0より大きい か、0か、0より小さい int

for

for文は繰り返し処理を行いたい時に使用します

例えば、「あああという文字列を10回繰り返して表示させる」といった時です

構文は以下の通りです

for ( 式1; 式2; 式3; ) {

繰り返したい処理

}

式2の条件を満たすまで繰り返したい処理の中が実行されます

では実際に繰り返し処理がされるのをやってみましょう

<?php
for ($i = 0; $i < 10; $i++) {
echo$i.”<br>”;
}
■実行結果

ちょっとわかりづらいかもしれませんが、0から始まって9で終わっているのでechoの処理が10回実行されています

while

whileもforと同じく繰り返し処理を実行するためのプログラムです

しかし、こちらは無限ループになってしまう可能性があるので、使われません

無限ループとは、whileで繰り返し処理をしているところで無限に繰り返し処理から出られなくなることを言います

whileは使わないようにしましょう

switch

switchはif文とかなり似ています

どのように使い分けるかというと、条件が3個くらいであればif文、もっと多い場合であればswitch文を使うようにしましょう

理由は、プログラムがみやすくなるのと、if文より多少処理が早いからです

switchの構文は以下の通りです

switch ( 値 ) {

case 条件1:

条件1に当てはまった時の処理

break;

case 条件2:

条件2に当てはまった時の処理

break;

default:

どの条件にも当てはまらなかった時の処理

}
では実際にやってみましょう

<?php
$a = 3;
switch ($a) {
case1:
echo”1です”;
break;
case2:
echo”2です”;
break;
case3:
echo”3です”;
break;
dfault:
“その他です”;
}

■実行結果

まこってぃがおすすめするプログラミングスクールはこちら

配列

一次元配列

変数には1つの値しか格納することができません

しかし、プログラミングをしていると1つの変数に複数の値を格納したい時があります

その時に使うのが配列です

イメージで言うと、変数という箱があり、さらにその中で箱ごとに分かれているイメージです

もう一つ覚えておいて欲しいのが、添字です

配列に何番目に格納したかとい番号のことを添字と言います

少しややこしいですが、最初に配列に格納した場合は「0」から始まります

なので、2番目に格納した値は「1」になります

要は格納した数-1ということです

では実際に試してみます

<?php
$a[0] = “1番目”;
$a[1] = “2番目”;
$a[2] = “3番目”;
echo$a[1];
■実行結果

多次元配列

変数[添字]が一次元配列でしたが、多次元配列は「変数[添字][添字]」となります

頭がこんがらがるかもしれませんが、がんばりましょう!

では早速!

下記は配列です

なので、

[“佐藤”, 15, “男性”]という纏りは0番目という扱いです

[“鈴木”, 18, “女性”]という纏りは1番目という扱いです

なので、$a[添字1][添字2]の添字1は上記の佐藤の方なのか鈴木の方なのかを指します

次に添字2ですが、[“鈴木”, 18, “女性”]の「鈴木、18、女性」の何番目かを指します

鈴木であれば0、18であれば1、女性であれば2となります

<?php
$a = [
[“佐藤”, 15, “男性”],
[“鈴木”, 18, “女性”]
];
echo$a[0][2].”<br>”;
echo $a[1][1];

■実行結果

関数

PHPが機能として元々提供してくれている関数のことを「ビルトイン関数」と言います

それに対し、自分でオリジナルの関数を作ることもできます

そのような関数のことを「独自関数」と言います

なぜ関数というものがあるのか、それは同じ処理を色々な箇所で書かないようにするためです

例えば税込の値段を計算をする処理があるとします

その処理を関数化しないで、その時々色々な箇所で計算の処理をそのまま書いてしまうと、税率が変わった時に全て1つ1つ修正してテストしないといけません

もしかしたら修正漏れがあるかもしれません

しかし、関数化しておくことで、税率が変わっても関数の処理1箇所だけを修正すれば良くなります

このような考え方を「オブジェクト指向」というので、必ず覚えておきましょう

引数がある関数

構文は以下の通りです

function 関数名(引数, 引数( {

処理

return 戻り値;

}

引数とは、関数に対して渡す値のことです

戻り値とは、関数で処理した結果を返す値のことです

では実際に関数を作ってみます

値を2つ渡して足し算をするプログラムを作ってみます

<?php
functioncalc($num1, $num2)
{
return$num1 + $num2;
}
echocalc(10, 20);

■実行結果

calc関数に渡した10と20の足し算をした結果が表示されました

ちなみに今回returnにはそのまま計算結果を返すように記載していますが、一旦変数に代入して、その変数を返すといったことも可能です

例えばこんな感じです

<?php
functioncalc($num1, $num2)
{
$sum = $num1 + $num2;
return$sum;
}
$res = calc(10, 20);
echo$res;
■実行結果

引数がない関数

関数は必ず引数で何か渡さなくてはいけないわけではありません
引数を渡さない関数を作ることも可能です
では実際にやってみます
単純に文字列を出力するだけの関数です
<?php
functionechoString()
{
echo”calc関数です”;
}
echoString();

■実行結果

デフォルトで引数がある関数

実は関数の引数にデフォルトで値を設定しておくこともできます

どのような時に使うとかと言いますと、真偽値(true/false)で処理を分けたい時に初期値として値を設定しておきたい場合です

実際にプログラムを書いてみます

<?php
functionresult($res = true)
{
if ($res === true) {
echo”trueです”;
} elseif ($res === false) {
echo”falseです”;
}
}
result();

デフォルト値があるので、result関数を呼び出す際は引数なしで「result();」だけで呼び出すことが可能です

では実行結果を見てみましょう
■実行結果

では次にresult関数を呼び出す時にfalseを渡してみましょう

<?php
functionresult($res = true)
{
if ($res === true) {
echo”trueです”;
} elseif ($res === false) {
echo”falseです”;
}
}
result(false);
■実行結果

デフォルト地ではなく、関数を呼び出す時に設定した引数の値が使用されます

なので、引数であたいを渡していればその値が使用され、引数で値を渡さなければデフォルト値が使用されます

変数のスコープ

ここで1つ覚えておかなくてはいけないことがあります

変数というのは、基本的に同じ名前を定義できません

例えば以下の場合はエラーとなります

<?php
functionresult($res = true)
{
$res = true;
$res = false;
if ($res === true) {
echo”trueです”;
} elseif ($res === false) {
echo”falseです”;
}
}
result(false);
$resを2つ定義してしまっているので、2つ目はエラーとなります
しかし、条件次第では同じ変数名を使用できます
それは、スコープ外であることです
少し難しいかもしれませんが、{}の中と外ではスコープが違います
なので、以下の場合はエラーとなりません
<?php
functionresult($res = true)
{
for ($i = 0; $i < 10; $i++) {
$res = true;
}
$res = false;
echo”生常終了しました”;
}
result();
■実行結果

同じ変数名を使う時はスコープを意識しましょう

まこってぃがおすすめするプログラミングスクールはこちら

Webアプリケーションの参考

まず覚えておいて頂きたいのが、URLにアクセスした時に呼ばれるファイルです

こちらは必ず「index.html」というファイルが読み込まれます

何故かというより、サーバーの仕様なので「そういうもの」という風に認識しておいてください

下記にWebアプリケーションがありますので、zipファイルをダウンロードしたら「htdocs」フォルダ内に好きな名前のフォルダを作成して、その中に展開してください
https://github.com/makoxty/php
今回はwebappという名前でフォルダを作成します
できたらサーバーを起動して下記のURLにアクセスしてください
http://localhost:8888/webapp/
そうすると下記のような画面が表示されます

ここまでお読み頂きありがとうございました

まこってぃがおすすめするプログラミングスクールはこちら

コメント

error:Content is protected !!
タイトルとURLをコピーしました