PHPの変数と定数(初心者向け)

# はじめに
PHPの基本をこの記事で書いていきます。
PHPの初学者の方向けの記事です。実際にコードを書いたりして
実際の挙動などを確認してみてください。

# 環境
MAMPをインストールします。
エディタはVScodeです。

# 環境構築方法
MAMPの環境構築が動画でわかりやすく載っていました。
PHPで出力する時はMAMPで出力するのでこちらを確認してください。

https://www.youtube.com/watch?v=I9xgwLfNnD4&list=PLErg7aSNT21xAVbJAEWS1oxgGLL__ySK2


# バージョン
以下のバージョンで挙動を確認しました。

![スクリーンショット 2022-03-31 1.32.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a3a83f23-1ba1-6e36-7d77-7d8531989048.png)

# 変数とは
変数とは変わる数のことで、***値に名前をつける名札***とイメージしてください。
名札に文字や数字を書いたりしてわかりやすくします。
変数があることで読めるプログラムが書けるようになる。

```variable.php
<?php
//変数
$name = "ポチ";
$age = 10;
echo $name. "<br>";
echo $age. "<br>";

//データ型
echo $name. "[データ型]". gettype($name). "<br>";
echo $age. "[データ型]". gettype($age). "<br>";
echo true. "[データ型]". gettype(true). "<br>";
echo false. "[データ型]". gettype(false). "<br>";

//演算子
$num = 5 * 8;
echo $num. "<br>";

// $num = $num + 9;
$num +=9;
echo $num. "<br>";

//$num += 1;
$num ++;
echo $num. "<br>";
?>

<!--HTMLタグ -->
<h1><?php echo $name?></h1>
<h1><?= $name?></h1>
```

![スクリーンショット 2024-05-02 16.51.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/5c3f5c4e-2000-07ef-41ae-aa0d3035660f.png)


## 変数を使っていく

変数を使う場合と使わない場合を見ていきます。

```php
//変数を使わない場合
echo 100 + 50;
//150と出力

//変数を使うが変数に意味がない場合

$a = 100;  //イコールで変数に代入できる
$b = 50;
echo $a + $b;
```
PHPでは変数を定義する時に```$```を使います。
上のだけだと何のプログラムかわかりづらいと思うので、もっとわかりやすくしていきます。

```php
//変数を使い変数に意味がある場合
$math_score = 100; //変数に意味を持たせて何をしているかわかる
$science_score = 50;
echo $math_score + $science_score;

//150と出力
```
変数に意味を持たせるとわかりやすいですよね。

普通の文字列でも書いてみます。
```php
$name = "太郎";
$job = "エンジニア";
echo $name;
echo $job;
//太郎エンジニア
```
改行すると
```php
$name = "太郎". "<br>";
$job = "エンジニア";
echo $name;
echo $job;
//太郎
//エンジニア
```

### 変数の上書き
***変数は下のプログラムを優先的に実行***していきます。
```php
<?php 
$number = 50;
$number = 100;
echo $number;
//100と出力
?>
```
最初変数が50で定義されていますが、その後に変数が100で定義されています。
これは優先的に下の処理を実行しているということです。



### 動的型付け言語と静的型付け言語
文字列なのか整数かを意識せず処理してくれる言語を```動的型付け言語```と言います。
(PHP、Ruby、Python、JavaScriptなど)
この反対が```静的型付け言語```といいます。
(Java、Go、Scala、C#など)


### var_dump
変数のデータ型や値を出力するための関数です。

```php
$name = "ポン太";
var_dump($name);
//string(9) "ポン太"
```
```Stringは文字列```のこと

```php
$age = 40;
var_dump($age);
//int(40)
```
initは```integer(整数)```のことです。

### 変数の決まり
まず***変数名の先頭を数字にするとエラー***が出ます。
```php
$1age = 40;
var_dump($age);
//エラー
```
上みたいに数字が先頭はダメで```変数の先頭は英文字かアンダーバー(_)```です。

### 変数の連結
変数は　```. で文字を連結できます。```
```php
$score_1 = 80;
$score_2 = 70;
$score_3 = $score_1 . $score_2;
var_dump($score_3);
//string(4) "8070"
```
***連結を使うと数字も文字列扱い***になります。

```php
<?php
//変数
$dog = "犬";
$cat = "猫";
echo $dog . "と" . $cat . "<br>";
$man = "ルフィ";
$age = 19;

echo $man . "<br>" . $age;
//犬と猫
//ルフィ
//19
```


### データ型
型を調べるのにはgettype(変数名)を入れます。
```php
$name = "太郎";
$age = 40;
echo $name. "[データ型]". gettype($name). "<br>";
//太郎[データ型]string
```
これで文字列だとわかります。
数値であるかも調べてみましょう。
```php
$name = "太郎";
$age = 40;
echo $age. "[データ型]". gettype($age). "<br>";
//40[データ型]integer
```
これで数値であることも確認で来ました。
次に```boolean型```を確認していきます。これは```真偽値を表している型```です。

```php
$name = "太郎";
$age = 40;
echo true. "[データ型]". gettype(true). "<br>";
echo false. "[データ型]". gettype(false). "<br>";

//1[データ型]boolean
//[データ型]boolean
```

### HTMLにPHPを表示する
HTMLにタグの中にPHPを表示する方法です。
```php
<?php
$name = "太郎";
?>

<h1><?php echo $name ?></h1>

```
そして***大きく太郎と表示***されます。
これを省略すると
```php
<?php
$name = "太郎";
?>
<h1><?= $name ?></h1>
```
これでも***太郎と大きく表示***されます。


# 定数とは
定数とは変わらない数のことで、***固定された値を入れておくための箱***をイメージしてください。
上書きしない固定された値として使います。

### 定数の定義
定数を定義する時に、```const```を使います。これははconstantの略称です。
```php
const SCORE = 100;
echo SCORE;
//100
```
基本定数名は***大文字***で書くことが多いです。
文字列なら
```php
const SCORE = "最高点";
echo SCORE;
//最高点
```
```php
const SCORE = "最高点";
const SCORE = "焼肉食べたい";
echo SCORE;
//最高点
```
本来なら下の処理が優先的に処理されるが定数のため下の処理が優先的に処理されないです。






# 全くPHPの書き方がわからない人向けの記事
https://qiita.com/Hashimoto-Noriaki/items/3d89e79c1f031afc7b96

# 参考資料
https://www.youtube.com/watch?v=mTbC2TKBftE&list=PLErg7aSNT21xAVbJAEWS1oxgGLL__ySK2&index=2

https://qiita.com/mackeyTA/items/069900b5c2366fb30e3a

https://qiita.com/Hashimoto-Noriaki/items/d705a3fb92db14de4742