【PHP】PHP基礎まとめ①

### スクリプトの入力
```sample2-1.php
<?php
    echo "Hello PHP";
?>
```

### ヒアドキュメント
```
<<<(ID)

複数行にまたがる文字列

(ID)
```

### 変数と代入
```sample3-1.php
<?php
    // 変数を使った簡単なスクリプトの例
    $a = 10;
    $b = 2;
    // $cに$aと$bの和を代入
    $c = $a + $b;
    // $a+$bの計算結果を表示
    echo $a . "+" . $b . "=" . $c;
?>
```
### var_dump関数
・$variable変数の値と型を調べる
```
var_dump($variable);
```

### if文
```
・if文の書式
if (条件式) {
    処理
}
```
### else文
・else文の書式
```
if (条件式) {
    処理１;
} else {
    処理２;
}
```
### else if文
・else if文の書式
```
if (条件式①) {
    処理;
} else if (条件式②) {
    処理;
} else {
    処理;
}
```
### switch文
・switch文の書式
```
switch (値) {
case 値１:
    処理;
    break;
case 値２:
    処理;
    break;
default:
    処理;
}
```
### for文
・for文の書式
```
for (初期化処理; 条件式; 増分処理) {
    処理
}
```
### while文
・ while文の書式
```
while  (条件式) {
    処理
}
```
### do~while文
・whileの書式
```
do {
    処理
} while(条件式);
```
## 配列
・配列の生成
```
[値1, 値２, ・・・]
```
### 配列の操作
```sample4-10.php
<?php 
    echo "(1)　配列の初期値<br>";
    $ar = ["orange", "apple", "banana"];
    print_r($ar);
    echo "<br>(2)　2番目の値を「pineapple」に変更<br>";
    $ar[2] = "pineapple";
    print_r($ar);
    echo "<br>(3) 配列の末尾の削除<br>";
    array_pop($ar);
    print_r($ar);
    echo "<br>(4) 配列の末尾に要素を追加<br>"
    array_push($ar, "cherry", "lemon");
    print_r($ar);
    echo "<br>(5) 配列の先頭を削除<br>"
    array_shift($ar);
    print_r($ar);
    echo "<br>(6)配列の先頭に要素を追加<br>"
    array_unshift($ar, "peach");
    print_r($ar);
    echo "<br>(7)配列の要素を削除<br>";
    unset($ar[2]);
    print_r($ar);
    echo "<br>(8)$arの配列の番号の振りなおす<br>";
    $ar = array_values($ar);
    print_r($ar);
?>
```
### 配列の切り取り
```sample4-11.php
<?php
    echo "配列\$ar1の初期値<br>";
    $ar1 = ["a", "b", "c", "d", "e",]; // 配列$ar1の初期値
    print_r($ar1);
    echo "<br>\$ar2:1番目から２つの要素を切り取り（添字の番号0から）<br>";
    $ar2 = array_slice($ar1, 1, 2); // 要素の切り取り①
    print_r($ar2);
    echo "<br>\$ar3:1番目から２つの要素を切り取り（添字の番号を保持）<br>";
    $ar3 = array_slice($ar1, 1, 2, true); // 要素の切り取り②
    print_r($ar3);
?>
```
### 配列の結合
```sample4-12.php
<?php
    // 配列$ar1、$ar2の初期値 
    $ar1 = ["a", "b"];
    $ar2 = ["c", "d", "e"];
    $result = array_merge($ar1, $ar2); //　配列を結合する 
    print_r($result);
?>
```
### 連想配列
#### 連想配列の定義
・連想配列の定義の書式
```
[キー1=>値1, キー2=>値2,・・・];
```
### 要素の追加と削除
```sample4-14.php
<?php
    $animals = ["dog"=>"犬", "cat"=>"猫", "bird"=>"鳥"];
    print_r($animals);
    $animals["dog"] = "いぬ"; // "dog"の値を"犬"から"いぬ"に変更
    echo "<br>";
    print_r($animals);
    $animals["horse"] = "馬"; // "horse"をキー"馬"を値として追加
    echo "<br>";
    print_r($animals);
    unset($animals["cat"]); // キー"cat"の要素を削除
    echo "<br>";
    print_r($animals);
?>
```
#### foreach文
・foreachの書式
```
foreach (配列変数 as　変数) {
    処理
}
```
#### foreachループでキーと値の両方を取得する
・配列のキーと値の両方を取得する書式
```
foreach (配列変数 as 変数A => 変数B) {
    処理
}
```
## 関数
#### 関数の定義
・関数の定義の書式
```
function 関数名(引数１,　引数２, ・・・) {
    処理
    return 戻り値;
}
```
#### 参照渡し
```sample5-4.php
<?php
    // 値渡しの関数
    function job_set1($param) {
        $param = "会社員";
    }
     //　参照渡しの関数
    function job_set2(&$param) {
        $param = "自営業";
    }
    // 職業の初期値
    $taro_job = "公務員";
    $hanako_job ="公務員";
    // 関数の呼び出し
    job_set1($taro_job);
    job_set2($hanako_job);
    // 結果の表示
    echo "太郎の職業は{$taro_job}です。<br>";
    echo "花子のの職業は{$hanako_job}です。<br>";
?>
```
・実行結果
```
太郎の職業は公務員です。
花子の職業は自営業です。
```
### さまざまな関数を利用する
#### 文字列に関する関数
```sample5-5.php
<?php
    // 文字列の設定
    $str = "HTMLとPHPの学習";
    echo "\$str=「{$str}」<br><br>";

    //　文字列の長さを求める（mb_strlen関数）
    $length = mb_strlen($str);
    echo "\$strの長さは{$length}文字です。<br>";

    //　文字列の5文字目から3文字切り取る（mb_substr関数）
    $sub = mb_substr($str, 5, 3);
    echo "\$strを5文字目から3文字切り取ると「{$sub}」です。<br>";

    //　文字列の中から「学習」を検索（mb_strpos関数）
    $srch = "学習";
    $result = mb_strpos($str, $srch);
    echo "「{$srch}」は、\$strの{$result}文字目に含まれます。<br>";

    //　文字列をHTMLからWebに置き換える（str_replace関数）
    $srch = "HTML";
    $replace = "Web";
    $result = str_replace($srch, $replace, $str);
    echo "\$strの「{$srch}」を「{$replace}」にすると「{$result}」になります。<br>";
?>
```
#### preg_match関数
　・preg_match関数の書式
```
preg_match(パターン, 対象の文字列)
```
#### isset関数
```isset関数を使ったプログラムsample5-9.php
<!DOCTYPE html>
<html>
    <head>
        <title>円の面積と円周の長さを求める</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>円の面積と円周の長さを求める</h1>
        <!-- 数値入力フォーム -->
        <form method="POST" action="sample5-9.php">
        <p><b>円の半径　(cm) :正の数を入力してください</b></p>
        <input type="text" name="radius">
        <br>
            <p>
            <?php
                //　半径が入力されているかの確認
                if (isset($_post["radius"])) {
                    //　半径を$rに代入し正規表現で型チェック
                    $r = $_POST["radius"];
                    if (preg_match("/^([1-9]\d*|0)(\.\d+)?$/", $r) == 1) {
                        if($r > 0.0) {
                            $pi = 3.14;
                            $area = $pi * $r * $r;
                            $cir = 2 * $pi * $r;
                            echo "<p>面積:{$area}cm2&nbsp;円周:{$cir}cm</p>";
                        } else {
                            echo "<p>半径には正の数を入力して下さい</p>";
                        }
                    } else {
                        echo "<p>半径には正の数を入力して下さい</p>";
                    }
                }
            ?>
            <input type="submit" value="計算する">
        </form>
    </body>
</html>
```

## 参考
https://www.amazon.co.jp/1%E9%80%B1%E9%96%93%E3%81%A7PHP%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%81%8C%E5%AD%A6%E3%81%B9%E3%82%8B%E6%9C%AC-1%E9%80%B1%E9%96%93%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%BA%80%E7%94%B0-%E5%81%A5%E5%8F%B8/dp/4295013579/ref=sr_1_4_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1S0ATLMOB44O5&keywords=php&qid=1680187881&sprefix=php%2Caps%2C213&sr=8-4-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExSVRKSkw1Q0U2WUZGJmVuY3J5cHRlZElkPUEwMDA5MTI0Wkg2OUdPMTJPR0RVJmVuY3J5cHRlZEFkSWQ9QTI0S0FWTUY4NFNNUjgmd2lkZ2V0TmFtZT1zcF9hdGYmYWN0aW9uPWNsaWNrUmVkaXJlY3QmZG9Ob3RMb2dDbGljaz10cnVl