YouTube参考にしながら学んでます。
ローカル環境→自分自身のパソコンの環境
☆phpを使ったウェブサイトを公開する場合は、WEBサーバーにphpを入れる必要がある。
手元のPCにはphp入ってないので、phpで書き換えを行ったHTMLをブラウザで見ることはできない。
サーバーにいちいちアップするのもめんどい
→ローカル環境構築
※サーバーをリモート環境という。
手元から離れているからリモートらしい
ブラウザからphpが書き換えたHTMLを確認するためにはWEBサーバが必要。
なのでwebサーバーとphpはセットって考えておく。
ローカルに入れる。phpとwebサーバーを。←インストールをする
そのインストールがXAMPP(ざんぷ)ってやつ
全部入ったキット的なやつ。
WEBサーバー(アクセスが来たらHTMLファイルを返してあげる)、DB、プログラミングが入ってる。
XAMPP=いくつかのソフトウェアの集まり。
そもそもソフトウェアは、動かせつ状態のプログラム
①アパッチ→WEBサーバー用のソフトウェア
アパッチがエンジンエックスをインストールしてあげると、そのPCがWEBサーバーとして動かすことができるんだって
Apache、nginx自体はWEBサーバーではないのだ。
正確にいうと、WEBサーバー用のソフトウェア
②M→MariaDB
MySQLではないのね。
もともと同じDBらしい。
もともとはMYSQL、そこからなんやかんやあって独立したのがMariaDB(free)
MySQL、MariaDBはDB用のソフトウェア
③Perl
人気のないプログラミング言語
④php
Xはいろんなのに対応しているって意味らしい
もともとがLAMPPだったけどこのlはLinuxのl。
phpInfo=phpのバージョンとか書いてある
data
を日本の時間に直す
Default timezone Europe/Berlin
変数はあだ名だと思う。
直近のあだ名がブラウザに出される。
最悪!!!全部記事なぜか消えたんだがwww
続きから書いていきます。
phpの暗黙の型変換
ジャバスクリプトも行ってくれる。弱い型付けの言語
暗黙の型変換を行わないやつは強いかた付けの言語
正しい形でプログラムをかくことに注意する!
NULL型は無
if文
プログラミングとは、コンピューターに命令をするためにかく。
if文は、条件が整った場合にのみ、コンピューターに命令を出すことができる。
<?php
if (bool型の値){
命令
}
bool型=TRUEかFALSEのどちらか
<?php
if (TRUE){
echo 'if文';
}
?>
ブラウザにはif文が出る。
FALSEだと出ない。
bool型は2個しかないけど
どちらか
<?php
if (TRUE || FALSE){
echo 'if文';
}
?>
どっちも
<?php
if (TRUE && FALSE){
echo 'if文';
}
?>
比較演算
比較が正しいときにTRUE、
異なるときにFALSEと出る。
<?php
var_dump(1 < 2);
echo '<br/>';
var_dump(2 < 1);
?>
<?php
var_dump(1 <= 2);
echo '<br/>';
var_dump(1 <= 1);
?>
bool(true)
bool(true)
<?php
var_dump(1 != 2);
echo '<br/>';
var_dump(1 != 1);
?>
等しい時は==でつなげる。等しいときにTRUEになる。
!は違う時がTRUEになる。
暗黙の型
<?php
var_dump(1 < 'a');
?>
bool(false)と表示されておる。
比較するときは、両辺のデータ型を揃えることを意識する。
===にすれば、型が等しいか、数値も同じかで見てくれる。イコールなら===と3つ=を並べたほうが良い。
if文について
bool型=TRUEかFALSEのやつ。
比較演算の二項演算
3<5的な
var_dumpでは型まで確認をすることができる。
if文の()の中に文字列をいくこともできる。
if文の()の値は、bool型に変換される。
自らキャストしてみる
※ある変数を任意の型で評価(変換)することをキャストといいます。例えば、「文字列」の数値を「整数」や「浮動小数点数」で変換することですね。
変数を任意の型へキャストする場合には「型キャスト」と呼ばれる型式を丸括弧「()」で閉じたものを使います
自らキャストをしてみる↓
文字列というのをbool型に変換してみる。
<?php
var_dump((bool)'文字列');
?>
bool(true)がブラウザに出てくる
文字列をbool型に変換するとTRUEと出てくる。
((bool)'文字列')の部分が計算されて、演算されて(キャストされて)、結果がvar_dumpによって出てくるわけ
if文のあとの()の中にbool型以外を入れないように注意する。
<?php
$x = -4;
if($x >= 0){
echo '0以上です';
}else{
echo '0以下ですな';
}
?>
0以下ですな←ブラウザに出されるやつ
両方がTRUE,FALSEになることはない。0以上でもないし、0未満でもないという数字は存在しない
網羅的である。必ずどちらかは当てはまるって意味だから。
両方TRUE(排他的)にもならない、FALSE(網羅的)にならない。
余事象の関係になるという意味。
<?php
$x = 4;
if($x >= 0){
echo '0以上です';
}if($x < 0){
echo '0以下ですな';
}
?>
if,
elseif
else
という3つの条件をn並べることもできる!
if文は2重のif文を書くこともできる。
<?php
$x = 0;
if($x > 0 ){
if($x % 2 ===0){
echo '正の偶数';
}else{
echo '正の奇数';
}
}else if($x < 0 ){
if($x % 2 ===0){
echo '負の偶数';
}else{
echo '負の奇数';
}
}
else{
echo '値は0です';
}
?>
むっずかしくてわろてまうわwww
スカラ型は大きく4つ
ヌル (NULL)→無のやつ
論理値 (bool)→真か偽か
整数 (int)→数値
浮動小数点数 (float, double も同じ)
文字列 (string)→シングルコーテーション、ダブルコーテシションで囲ってあげると文字として出力されるやつ。
複合型
型→データの種類のこと、なんのデータのことか
人間も数値だけではわからない。
1kg?
1m?ってなってしまう。
型は単位みたいなもんだな
コンピューターが扱っているデータは2進数のみ。型を使うことで2進数以外のデータを使うことができる。
phpは基本型がメイン。
基本データ型をいくつか組み合わせて、1つのデータ型とする。
→連想配列をなす。
連想配列
大体の言語でもともと使用されている。JavaScriptで、オブジェクト
キーバリュー型。
→ある値に別の値を対応させて保持するデータ型。片方がKey、もう一方をvalueとする。
キーからバリューを取り出すことができる。逆はできない。
<?php
$pet = [
'ねこ' => 'スコティッシュフォールド'
];
var_dump($pet)
?>
ブラウザで出されるやつ
array(1) { ["ねこ"]=> string(36) "スコティッシュフォールド" }
連想配列では
arrayというなまえの型になっている。
<?php
$pet = [
'ねこ' => 'スコティッシュフォールド'
];
echo $pet['ねこ'];
?>
スコティッシュフォールドとブラウザには表示される。
$petはあだ名を付けているのと同じ。
複数の値を保持することができる。
<?php
$pet = [
'ねこ' => 'スコティッシュフォールド',
'足短' => 'マンチカン'
];
echo $pet['足短'];
?>
と打つと、マンチカンとブラウザに出される。
複数のデータを保持し、1つのデータを呼び出すこともできる。
<?php
$pet = [
'ねこ' => 'スコティッシュフォールド',
'足短' => 'マンチカン'
];
echo $pet['足短'];
$pet['足短'] = 'かわいい';
echo '<br/>';
echo $pet['足短'];
?>
ブラウザに映し出されるのは、
マンチカン
かわいい
途中で変わった値を出す頃もできる!
ちなみに、存在しないvalueが入ってしまうとerrorになってしまう。
<?php
$pet = [
'ねこ' => 'スコティッシュフォールド',
'足短' => 'マンチカン'
];
echo $pet['足短'];
$pet['足短'] = 'かわいい';
echo '<br/>';
echo $pet['足短'];
echo '<br/>';
$pet['pet大好き'] = '私';
echo $pet['pet大好き'];
?>
ブラウザにはこれが出される↓
マンチカン
かわいい
私
$pet['pet大好き'] = '私';
echo $pet['pet大好き'];を書くことで新たなキーとバリューを加えることができる。
もちろん新しい値を代入することができるから、echoで出るわけだよね。
連想配列を頑張るとかなりphpで処理を書くことができるらしい。
連想配列は複数のデータのまとまりで1つのデータとすることだよね。
キーバリュー型
たくさんのデータを保持する。
キーを使ってバリューを取り出す。
連想配列②
phpはキーに使えるのは文字列か整数しか使えない。これ以外を使うと暗黙の変換が起きてしまう。
キーにキーバリュー型とかわけわかんないもの入れるとエディタが怒る。
暗黙の型変換はあんまり使わないようにした方がいい。
キーの型は統一するようにする。
配列はphpにない。
連想配列の他に、配列というのがあるけどphpには配列はない。
配列のように入れることができる。
配列は以下の条件で使う決まりがあるのだ。
※配列の条件はキーの整数は0から始まる連番であること、キーが整数であること
キーと矢印を省略することができる。
<?php
$a = ['猫', '犬', '鳥', 'うさぎ'];
var_dump($a);
?>
ブラウザにはarray(4) { [0]=> string(3) "猫" [1]=> string(3) "犬" [2]=> string(3) "鳥" [3]=> string(9) "うさぎ" }と出る。
[0]=> string(3) "猫" [1]=> string(3) "犬" [2]=> string(3) "鳥" [3]=> string(9) "うさぎ"
キーが0、1、2、3と0から始まる連番になっている。
配列、やっていることは連想配列みたいな感じ。
<?php
$a = ['猫', '犬', '鳥', 'うさぎ'];
array_push($a, 'モルモット'); //関数の追加
var_dump($a);
?>
ブラウザには
array(5) { [0]=> string(3) "猫" [1]=> string(3) "犬" [2]=> string(3) "鳥" [3]=> string(9) "うさぎ" [4]=> string(15) "モルモット" }
と出される。
array_push($a, 'モルモット')を入れたことで最後の配列に、入れることができる。
もちろん単数ではなく、複数で値を入れることも可能。
<?php
$a = ['猫', '犬', '鳥', 'うさぎ'];
array_push($a, 'モルモット', '亀'); //関数の追加
var_dump($a);
?>
array(6) { [0]=> string(3) "猫" [1]=> string(3) "犬" [2]=> string(3) "鳥" [3]=> string(9) "うさぎ" [4]=> string(15) "モルモット" [5]=> string(3) "亀" }
1つしか値を追加しないときは、
$a[] = 'へび';でやったほうが早い。早く処理をすることができる。
<?php
$a = ['猫', '犬', '鳥', 'うさぎ'];
$a[] = 'へび';
var_dump($a);
?>
array(5) { [0]=> string(3) "猫" [1]=> string(3) "犬" [2]=> string(3) "鳥" [3]=> string(9) "うさぎ" [4]=> string(6) "へび" }
配列同士を
array_mergeでくっつけることができる。
元の配列にはなんの影響もない。
<?php
$a = ['猫', '犬', '鳥', 'うさぎ'];
$b = ['へび', '亀', 'トカゲ'];
$pet = array_merge($a,$b);
var_dump($pet);
?>
array(7) { [0]=> string(3) "猫" [1]=> string(3) "犬" [2]=> string(3) "鳥" [3]=> string(9) "うさぎ" [4]=> string(6) "へび" [5]=> string(3) "亀" [6]=> string(9) "トカゲ" }
array_unshiftを使うことで
配列の先頭に要素を追加することができる。
<?php
$a = ['猫', '犬', '鳥', 'うさぎ'];
array_unshift($a, 'かめ');
var_dump($a);
?>
array(5) { [0]=> string(6) "かめ" [1]=> string(3) "猫" [2]=> string(3) "犬" [3]=> string(3) "鳥" [4]=> string(9) "うさぎ" }
array_shift($a);で最初の要素を消すことができる。
先頭の猫が消えてる
<?php
$a = ['猫', '犬', '鳥', 'うさぎ', 'かめ'];
array_shift($a);
var_dump($a);
?>
array(4) { [0]=> string(3) "犬" [1]=> string(3) "鳥" [2]=> string(9) "うさぎ" [3]=> string(6) "かめ" }
削除した要素を返す
<?php
$a = ['猫', '犬', '鳥', 'うさぎ', 'かめ'];
$first = array_shift($a);
var_dump($first);
?>
string(3) "猫"と表示されます。
後ろの要素を消す
<?php
$a = ['猫', '犬', '鳥', 'うさぎ', 'かめ'];
array_pop($a);
var_dump($a);
?>
array(4) { [0]=> string(3) "猫" [1]=> string(3) "犬" [2]=> string(3) "鳥" [3]=> string(9) "うさぎ" }
phpのfor文
for文
連想配列と組み合わせると良い、PCに繰り返しの処理を命令したい時に良い。
<?php
//for文 連想配列と組み合わせると良い、PCに繰り返しの処理を命令したい時に良い。
for($i = 0; $i < 10; $i++){
echo 'こんにちは';
echo '<br/>';
}
?>
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
とブラウザに出力される。
for(初期化処理; 継続条件; 更新処理){
//処理
}
3つしきを書くことができる。
初期化処理
→繰り返しが始まる前に読まれる値
継続条件
→繰り返し処理する条件、継続条件がtrueの間にずっと処理をさせられる。
論理値。falseになるまでやる
更新処理
→繰り返し読まれる。
$i++; インクリメント
$i = $i +1;
$i += 1; 複合代入演算子
この二つは全く同じ意味です。
シンタックスシュガーという。
<?php
//for文 連想配列と組み合わせると良い、PCに繰り返しの処理を命令したい時に良い。
for($i = 0; $i < 10; $i++){
echo 'こんにちは';
echo '<br/>';
}
echo $i;
?>
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
こんにちは
10
こんにちはの条件が終わって、最後の$iがechoされている。
<?php
//for文 連想配列と組み合わせると良い、PCに繰り返しの処理を命令したい時に良い。
for($i = 0; $i < 20; $i++){
$count = (string)$i;
echo $count . '回目の繰り返しです。';
echo '<br/>';
}
echo $i;
?>
0回目の繰り返しです。
1回目の繰り返しです。
2回目の繰り返しです。
3回目の繰り返しです。
4回目の繰り返しです。
5回目の繰り返しです。
6回目の繰り返しです。
7回目の繰り返しです。
8回目の繰り返しです。
9回目の繰り返しです。
10回目の繰り返しです。
11回目の繰り返しです。
12回目の繰り返しです。
13回目の繰り返しです。
14回目の繰り返しです。
15回目の繰り返しです。
16回目の繰り返しです。
17回目の繰り返しです。
18回目の繰り返しです。
19回目の繰り返しです。
20
echo $count . '回目の繰り返しです。';
文字列の結合演算 シングルコーテーション
echo "{$count}回目の繰り返しです。";
文字列の埋め込み Wコーテーション
数値型から文字型へのキャスト
String型(文字型)にキャスト(型変換)をしている。
暗黙の型変換をしてくれるから、いらないかもしれない時もあるけど、基本はキャストをするように。
どこでキャストしたのかを自分でもわかるようにしたほうがええのかな。
とにかく型を意識してやること。
for文を2重で描いてみる。
<?php
for($i = 1; $i < 10; $i++){
for($p = 1; $p <10; $p++){
$x = $i * $p;
echo "{$i}×{$p}={$x}";
echo '</br>';
}
}
?>
1×1=1
1×2=2
1×3=3
1×4=4
1×5=5
1×6=6
1×7=7
1×8=8
1×9=9
2×1=2
2×2=4
2×3=6
2×4=8
2×5=10
2×6=12
2×7=14
2×8=16
2×9=18
3×1=3
3×2=6
3×3=9
3×4=12
3×5=15
3×6=18
3×7=21
3×8=24
3×9=27
4×1=4
4×2=8
4×3=12
4×4=16
4×5=20
4×6=24
4×7=28
4×8=32
4×9=36
5×1=5
5×2=10
5×3=15
5×4=20
5×5=25
5×6=30
5×7=35
5×8=40
5×9=45
6×1=6
6×2=12
6×3=18
6×4=24
6×5=30
6×6=36
6×7=42
6×8=48
6×9=54
7×1=7
7×2=14
7×3=21
7×4=28
7×5=35
7×6=42
7×7=49
7×8=56
7×9=63
8×1=8
8×2=16
8×3=24
8×4=32
8×5=40
8×6=48
8×7=56
8×8=64
8×9=72
9×1=9
9×2=18
9×3=27
9×4=36
9×5=45
9×6=54
9×7=63
9×8=72
9×9=81
phpの繰り返し処理第二弾
break文と、continue文 ループを制御させるためのもの。
break文→繰り返しを途中で終了させることができる。
配列の中にマイナスの数が含まれているかどうか知りたい
→個数ではなく、含まれているかどうかを知りたい。
break分
<?php
$arr = [12, 13, 45, 19, 90, -8, 4]; //調べたい配列
$num = count($arr);
//countという関数を使って、配列の要素の取得をする。何個あるかわかる。7個ありますね。
$message = '含まれていません';
//代入
for($i = 0; $i < $num; $i++){ //配列の要素数分、処理を繰り返すという条件式
$value = $arr[$i]; //valueに配列の要素 12とか13とか45とかが入っていく。
if($value < 0){
$message = '含まれています';
break; //処理を打ち切る
}
}
echo $message;
?>
含まれていますと出る。
これ以上処理をする必要がないって時は、breakを使うとOKです!
continue文
繰り返しの中で、ある繰り返しの時は、それ以上処理を行わず次のループにいきたいとか
ある配列の中の偶数の総数を知りたい時とか。
→continueを使うことでOK
<?php
$arr = [12, 13, 45, 19, 90, -8, 4];
$num = count($arr);
//countという関数を使って、配列の要素の取得をする。何個あるかわかる。7個ありますね。
$sum = 0;
for($i = 0; $i < $num; $i++){
$value = $arr[$i];
if($value % 2 === 1){
continue; //奇数だったら処理を続ける。奇数ではなくfalseであれば下の処理にすすむ
}
$sum += $value;
//$sum = $sum + $valueも同じ。偶数だけをたしあげる
}
echo $sum;
?>
98とブラウザには表示されました。
while文
<?php
初期化式;
while(継続条件式){
//更新式;
}
?>
継続条件式がtrueの間だけ、継続的に処理がされていく感じです。
for文とほぼ同じ感じ。
相互に書き換えることができる。シンプルに描けるかどうかの観点で考えると良いらしい。
foreach文
連想配列の要素を1つずつ取り出したい時にかく。
連想配列が、変数名にそれぞれ代入されていくようなイメージ。
<?php
foreach($連想配列 as $変数名){
//処理
}
?>
<?php
$arr = [1, 2, 3, 5, 7];
foreach($arr as $number){
//処理
echo $number;
echo '</br>';
}
?>
1
2
3
5
7とブラウザには表示されます。
配列から要素を取り出すことができる。countで要素を出す関数もあるけど、シンプルに書き出すことができる。
キーを取り出すこともできる。
関数
あるデータを受け取って、処理を行って、処理結果として別のデータを返すもののことをいう。
データを与えると、処理をされて別のデータになる感じ。
関数には2つあって、
①ビルトイン関数=phpにもともと用意されている
②ユーザー定義関数=phpを各人が用意する関数
連想配列の要素を数えてくれるカウント関数
countが関数。
関数名の後に()を入れることで関数を呼び出すことができる
関数呼び出し、コールファンクション
帰ってきた結果を$xに代入している。
<?php
$arr = [1, 2, 3, 4, 5];
$x = count($arr);
echo $x;
?>
ブラウザには5と表示される。
absという関数
→絶対値関数、数を与えるとその数の絶対値を出してくれる。
https://www.php.net/manual/ja/book.math.php
マニュアルはこれ
ユーザー定義関数
<?php
$function 関数名($引数1, $引数2){
//処理
return 返り値;
}
関数名($実引数);
?>
多くても3つくらいの受け取り数にする。
4つ以上なら関数を分けたほうがいいかも
引数名は変数を設定する。$引数1は仮引数ともいう。
関数を呼び出した側に、帰り値を渡してあげる。
<?php
function add($x, $y){
//処理
$z = $x + $y;
return $z;
}
$sum = add(15 ,6);
echo $sum;
?>
関数定義をみて、関数の値をみるという流れで処理している。
ブラウザには21と出される。phpは上から処理される。
定義が下に見ても大丈夫だけど、他の関数だとエラーになるみたい。
<?php
function add($x, $y){
//処理
$z = $x + $y;
return $z;
}
$z = 0;
$a = 2;
$b = 3;
$sum = add($a ,$b);
echo $sum;
echo '</br>';
echo $z;
?>
これは、ブラウザに
5
0
と表示されます。
echo $z;が0となるのは、phpにはスコープという概念があるからこのような結果になるのだ。
スコープ=変数の有効範囲ともいう。
この変数がどこまで有効なのかという感じ。
①ローカルスコープ
ユーザー定義関数の中のこと。
{
//処理
$z = $x + $y;
return $z;
}
②グローバルスコープ
ユーザー定義関数の外全体のこと、ローカルすこーぷ外のこと。
$z = 0;
①と②は別のものな訳ね。
voidの概念
関数の中には何もデータを受け取らない、返り値をしない関数もいる!
そーゆー関数のことを
引数がvoid型、返り値がvoid型という。空っぽのものを受け取って、空っぽなものを返す感じ。
クラスとオブジェクト
phpはクラスベースのオブジェクト指向プログラミング言語。
クラス構文という文法を使ってオブジェクト指向プログラミングを行っていく。
クラスというものを定義してやっていく感じ。
クラスは類、オブジェクトは物(モノ)
似たものの集まり、仲間を定義するもの=類
動物という概念=クラス
オブジェクトはそのクラスのそれぞれのものを出す。
猫、犬、鳥とかこーゆーのがオブジェクトになる。
クラスを書くときはどんな概念を描こうとしているのかを考えないと、しっかりかいていくことができないっす!
できるだけ、詳しくかく。
クラスを書く時は、データと振る舞いを定義する。
人間はどのようなデータを持っているのか
☆データ
名前、電話番号、住所、年齢
☆振る舞い
眠る、歩く、食べるととか・・・
これをプログラミングで描いていく!!!!
calssを定義する。Humanっていう名前のクラス名。
class Human {
}
{}の中にデータを描いていく。
クラスで定義をしたデータをプロパティということもできる。
//データを持たせる。
public $name;
private $gender;
private $birthday;
public
private
protectedたちは、アクセス修飾子という。
プロパティ名の前におく必要がある。
protectedは継承する感じ。
publicは、クラスの外に晒すという設定
privateは外部から隠す設定
特に理由がなければ、privateにしておくほうがいいみたいです。
メソッドで振る舞いを設定する。
メソッドとは、実態としては、関数です、オブジェクトに関数を設定してあげることで振る舞いを設定することができる。
コンストラクタ
例えばオブジェクト生成時のインスタンス変数の初期化が挙げられます。
newをつけて クラスめいつけてかっこ
→new Human()
$human = new Human();
<?php
class Human {
//データを持たせる。
public $name;
private $gender;
protected $birthday;
//アクセス修飾子
//メソッドはただの関数、引数やreturnも返すことができる。
public function walk(){
echo '歩きます</br>';
}
public function eat(){
echo '食べます</br>';
}
}
$human = new Human();
$human->eat(); //メソッドの呼び出し
$human->walk(); //メソッドの呼び出し
?>
食べます
歩きますとブラウザには表示されました。
<?php
class Human {
//データを持たせる。
public $name;
private $gender;
protected $birthday;
//アクセス修飾子
//メソッドはただの関数、引数やreturnも返すことができる。
//値を代入している。 デフォルトのコンストラクターを上書きすることができる。
//public function __construct
public function __construct($name, $gender, $birthday) //引数を入れる。
{
//引数を入れる。
$this->name = $name;
$this->birthday = $birthday;
$this->gender = $gender;
}
public function walk(){
echo "{$this->birthday}は歩きます</br>";
}
public function eat(){
echo '食べます</br>';
}
}
$human = new Human('きなこ', '12月', '女'); //値を代入している。
$human->eat();//メソッドの呼び出し
$human->walk();//メソッドの呼び出し
?>
食べます
女は歩きますとブラウザには表示されました。
public function __construct($name, $gender, $birthday)の値を
public $name;
private $gender;
protected $birthday; に代入する必要がある。
だって全く別物だから。
それで、代入する。
$thisで代入
$this->name = $name;
$this->birthday = $birthday;
$this->gender = $gender;というのが出てきた。
$this->genderはprivate $gender;のgenderである。それにconstructorのgenderを代入している感じ。