PHPの覚書

PHP学習の覚書




###連想配列について
#####連想配列は何層にもできる
```php:test.php
$array_promise_member = [
  'human'=>[
    'Emma' =>[
      'sex' =>'woman',
      'plant' => 'three',
      'age' => 11
    ],
    'Ray' =>[
      'sex' =>'men',
      'plant' => 'three',
      'age' => 12
    ],
    'Noman' =>[
      'sex' =>'woman',
      'plant' => 'three',
      'age' => 11
    ],
  ],
  'monster' =>[
    'Sonju' =>[
      'sex' =>'men',
      'age' => null,
    ],
    'anokata' =>[
      'sex' =>'men',
      'age' => null,
    ]
  ]
];

//連想配列の呼び出し方
echo $array_promise_member['human']['Emma']['age'];
//11


```

###Var_dump()
#####変数の内容を確認できる
```php
echo '<pre>';
var_dump($array_promise_member);
echo '<pre>';
//echo '<pre>';を上下につけると見やすくなる
```

###改行方法
#####  . PHP_EOL ,EOT,eho '\<br>'



###ifを使うときのテクニック
##### elseを使うと可読性が下がるので
```php

$here = 'farm';
if($here ==='farm'){
  echo '脱獄';
}else{
  echo'stay ease';
}
```
こう書き換える

```php
if($here === 'farm'){
  echo '脱獄';
}

if($here !=='farm'){
  echo 'stay ease';
} 

```

###データが入ってるかどうかの判定
####isset / empty / is_null

データベースからデータを取ってきたときにデータが入っているかどうかを確かめる

```php

$test='1';

//empty構文を使った場合
if(!empty($test)){
  echo '変数は空ではありません';
}
//変数は空ではありません
```

###三項演算子
####if else -> 条件 ? true : false
```php

$rank = '特上';

$command = $rank === '特上' ? 'catch! Don't kiII' : 'KiII them';

echo $command;
```


###foreachについて
####多次元配列のforeach

```php
  $members = [
    'Emma' =>[
      'kind' =>'human',
      'plant' => 'three',
      'age' => 11
    ],
    'Ray' =>[
      'kind' =>'human',
      'plant' => 'three',
      'age' => 12
    ],
    'Noman' =>[
      'kind' =>'human',
      'plant' => 'three',
      'age' => 11
    ]
  ];


//
foreach ($members as $member1) {
  foreach ($member1 as $member) {
    echo $member;
    echo '<br>';

  //キーも取りたい時は
foreach ($members as $member1) {
  foreach ($member1 as $member => $value) {
    echo $member . 'は' . $value . 'です。' ;
    echo '<br>';
  }
}
```

###等号記号について
####＝＝＝か＝＝か
PHPはどちらも使えるが、
== 型が違っても等しい
===　型も等しい

となる。
例えば

```php
$string_num = '10';//文字列

if($string_num == 10){//数値
  echo '等しい';
}
//等しい
```
となってしまう。

```php
$string_num = '10';//文字列

if($string_num === 10){//数値
  echo '等しい';
}
//error
```
※switchの場合は、デフォルトだと==になってしまうので

```php
$string_num = '10'

switch($string_num){
 case $string_num === 10:
  echo '等しい';
 case....
```
と書くことで厳密なチェックができるが
書き方が複雑になってしまうので
<strong>なるベくswitchを使わずifを使う</strong>


###よく使う関数
####文字列関数

 - strlen
 文字列の長さ(バイト数)を調べる関数
※日本語の平仮名は1文字3バイト
https://www.php.net/manual/ja/function.strlen.php

 - md_strlen
 文字列の長さを調べる関数
※日本語も1文字として計算される
https://www.php.net/manual/ja/function.mb-strlen.php

 - str_replace
 文字列を置換する関数
https://www.php.net/manual/ja/function.str-replace.php

 - explode
 文字列を分割する関数
https://www.php.net/manual/ja/function.explode

 - implode
 文字列を結合する関数
https://www.php.net/manual/ja/function.implode

 - preg_match
 正規表現に使用
→文字か数字か、郵便番号やメールアドレスが正しく入力されているかを確認する
https://www.php.net/manual/ja/function.preg-match


 - mb_substr
 指定文字列から文字列を取得する
https://www.php.net/manual/ja/function.mb-substr

参考：図解でわかるPHP関数一覧
http://html2php.starrypages.net/php/array-funcs


###外部ファイルの読み込み
####requireとinclude
require・・・ファイルの読み込みに失敗するとエラーになる
include・・・ファイルの読み込みに失敗すると警告が出る

```php
<?php

require 'ファイル名';

//外部ファイルの関数や変数が使える

```

####現在のファイルの絶対パスを表示させるマジック定数
```php:main.php
echo __DIR__;

//  ~/~/~/main.php
```
外部ファイルを絶対パスで読み込みたい時は

```php:main.php
require __DIR__ . '~/~/~/○○.php';
```

として読み込むことが出来る