【PHP】基礎メモ

# 最初に
自身で学習してきた内容を書き出していきます。
基本的には自分自身でわかるような内容になりますので、ご容赦ください。
また、誤っている点がありましたら、コメントにてご指摘ください。

（要確認）マークがあるものは、「実行前に必ずググる」べき内容。



# index
- PHPってなんぞ？
- echoとprintのちがいと使いどころ
- 四則演算処理
- 文字列と数値
- 変数と定数
  - 変数
  - 定数
- if文



# PHPってなんぞ？
**PHPはHTMLに埋め込むことができ、Web開発でよく使用されるスクリプト言語**
※JavaScriptもスクリプト言語であり、PHPとJavaScriptの大きな違いは、そのコードがどこで実行されるかだぞ。

**JavaScript**
クライアントサイド（Webサイトを閲覧しているブラウザ）がコードを受け取り、そこで動作する。
そのため、どのようなコードが書かれているのか、誰でもみれる👀。

**PHP**
サーバーサイドでコードを実行。
クライアントサイドはその結果のみを受け取るため、どのようなコードで導き出された結果なのか見ることができません🕶。

PHPはHTMLに埋め込んで使うことができ、<?php 〜 ?>の中にPHPの命令を書くぞ。
(<?php 〜 ?>の部分がHTMLに変換された上で表示される。)

PHPでは文末にセミコロン「**;**」を使って文を区切る。**エラー**が起きるぞー♫
あと、「//」から行末まではコメントになる。動作には関係しない情報で、主にメモなどを書き込むときに使うぞ。

```php:xxx.php
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>xxx</title>
  <link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>

<?php
print "hello,world!"; //結果 hello,world!
?>

</body>
</html>
```



# echoとprintのちがいと使いどころ
「echo」と「print」について、違いがある

「echo」は文字列などを出力するための命令。
「print」も文字列などを出力するための命令。

最も大きなちがいは**式（ expression ）**かどうか。
**「echo」をif文の中に入れることはできないけど、「print」の場合は可能だよ。**って感じ。

```php:xxx.php
//print
//文字列を出力する場合はシングルクォーテーション「'」かダブルクォーテーション「"」で囲む。
print "hello,world!"; //結果 hello,world!

//echo
//文字列を出力する場合はシングルクォーテーション「'」かダブルクォーテーション「"」で囲む。
echo "hello,world!"; //結果　hello,world!



// echo の場合: ×
// Parse error になる
if (echo 5) {
    print 'echo is an expression with return value';
}
// print の場合: ○
// 問題なく動作する
if (print 5) {
    print 'print is an expression with return value';
}
```

# 四則演算処理

```php:xxx.php
echo 3 + 2; //結果 5

echo 3 - 2; //結果 1

echo 3 * 2; //結果 6

echo 9 / 3; //結果 3

//割り算の余り
echo 5 % 2; //結果 1
```



# 文字列と数値
PHPには、「文字列」や「数値」などのデータの種類がある。
「'Hello'」,「'a'」などは文字列、「1」,「3.14」などは数値となります。

```php:xxx.php
echo 3 + 2; //結果 5
echo "3 + 2"; //結果 3 + 2
```



# 変数と定数
## 変数
プログラミングの重要な概念であり楽しい部分！
変数とは、データの入れ物。頭に「$」記号をつけることによって変数を定義できるぞ。
「$変数名 = 値;」で様々な値を変数に入れることが出来ます。
**「＝」はプログラミングの世界では、右辺を左辺に代入するという意味ということに注意！**

### 変数の主なルール
・変数名はドル記号から始まります。
・変数名は大文字と小文字を区別します。（ドルaとドルAは別の変数だと認識されます。）
・変数名に使えるのは、以下の文字になります。
　・英大文字小文字（a～zもしくはA～Z）
　・数字（ただし、先頭には使えません。）
　・_(アンダーバー)

```php:xxx.php
$name = hoge;
echo $name; //結果 hoge

$x = 7;
$area = $x * $x;
echo $area; //結果 49（正方形の計算）
```

| 例 | 具体例 | 理由 |
|:--:|:--:|:--|
| 数字開始 | 1nam | エラー出る |
| ローマ字 | aisatu | わかりにくい |
| 日本語 | 名前 | プログラミングでは日本語はあまりよろしくない |

以下の特殊な変数名はすでに定義されています。（同じ名前は付けられません）
[詳しくはこちら](https://www.php.net/manual/ja/reserved.variables.php#reserved.variables.globals)

| 変数名 |
|:--:|
| $this |
| $GLOBALS |
| $_SERVER |
| $_GET |
| $_POST |
| $_COOKIE |
| $_FILES |
| $_SESSION |

※変数は、中に入っている値を変更することもできます。
変数に、その後再び値を代入すると、後で代入した値によって変数の中身が上書きされます。

```php:xxx.php
$num = 3;
echo $nam //結果 3

$num = 5;
echo $nam //結果 5
```



### 「変数の値にxを足したい」とき

```php:xxx.php
$x = 1;

$x = $x + 10;
echo $x; //結果 11

//省略形
$x += 10;
$x -= 10;
$x *= 10;
$x /= 10;
$x %= 10;

//足す数字が１の時のみ
$x++
$x--

//++を変数の前に書くとその行の命令が実行される前に足される
//++を変数の後に書くとその行の命令が実行された後に足されます
$x = 3;
$y = 3;

echo ++$x; //結果 4
echo ++$y; //結果 3
```



### 文字列の連結
ドット「.」記号を用いると文字列を連結できる。

- 文字列同士の連結
- 変数と文字列の連結
- 変数同士の連結

```php:xxx.php
$x = 'PHP';
echo x.'楽しい'; //結果 PHP楽しい

$y = '頑張ろう！':
echo x.y; //結果 PHP頑張ろう！



//.= を用いると変数と文字列の連結を省略
$name = 'hoge';
$name .= 'です！';

echo $name //結果 hogeです！
```

**変数展開**
ダブルクォーテーションで文字列を囲んだ場合、
中の変数を{}で囲むとその部分が変数に入っている値で置き換える。

シングルクォーテーションで文字列を囲んだ場合は変数展開されず、変数が{}で囲まれていてもそのまま文字列としてみなされる。

```php:xxx.php
$x = 'hoge';
echo "こんにちは、 {$x} さん。"; //結果 こんにちは、 hoge さん。

echo 'こんにちは、 {$x} さん。';//結果 こんにちは、 {$x} さん。
```


## 定数
定数も同じくデータ（値）を入れる箱のようなもの。
定数に値を入れる（定義する）には、**define**という関数を使用。
（ここでは超ざっくり「命令するもの」のイメージでOK）

### 定数のルール
・定数は、先頭にドル記号($)が必要ありません。
・定数を定義することができるのは、define関数 のみです。（単なる代入（=）による定義はできません。）
・定数は一度設定されると再定義または未定義とすることはできません。
・定数に指定できるのは、スカラデータ（値） （型がboolean, integer, double, string, NULL) のみです。

```php:xxx.php
define("TITLE", " 基礎メモ");

define("TITLE", "タイトル");  //再定義はできないので、これは定義されないぞ

define ("TAX" , 1.08); //消費税などで活用できそう♫
print 100 * TAX; //結果 108
```


# if文
if文を使うと、条件に応じて処理を分岐することができるぞ！
```php:xxx.php
$x = 20;
if ($x > 10)
{
  echo '10よりも大きい数字！'
}
//結果 10よりも大きい数字！

if ($x < 10)
{
  echo '10よりも大きい数字！'
}
//結果 (処理されない)
```

**いろいろな数値の比べ方**

```php:xxx.php
<  //右辺の値の方が大きい時true
<= //右辺の値の方が大きい、または等しい時true
>  //左辺の値の方が大きい時true
>= //左辺の値の方が大きい、または等しい時true

==
```

更新　あんど　修正中・・・


```php:xxx.php

```