PHP8模試 間違えたとこまとめ その1
ヒアドキュメント
改行を含む長い文字列を表す場合に使う。
<?php
<<<EOD
...
EOD;※EODという文字は区切り文字のため、開始と終了があっていれば、EOD以外の文字に変えてもいい。その場合、小文字でもいいけど、見分けるため大文字が一般的。
開始文字列によって文字列の解釈が異なるため注意が必要。
- <<<EOD/<<<"EOD":変数やエスケープシーケンスを扱える。(展開できる)
- <<<'EOD':変数やエスケープシーケンスを扱えない。(展開できない)
終了文字列(EOD)にクォートはつけない。変数を入れる場合は {$変数名}
substr("文字", 開始位置, 長さ)
文字列の一部を返す。
- offset(開始位置):文字の0から数えてn番目。正の値:0、負の値:後ろから数える(-1から数える。)
※文字列長さ < offsetだと空の値を返す。 - length(長さ):生であればoffsetから数えてn文字分を返す。負であれば、終端からn文字省略
※0だとnullを返す。省略するとoffsetの数値~終わりまで
コメント
<!-- ~ -->:エンドユーザーにも見えるコメント(HTMLに表記される)
// , #:行末まで(実務では#はあまり使わない)
/* ~ */:複数行ifができるかの条件
式を計算した結果が「true」になればif文になる。
- "php" > "per1"→文字同士の比較。アルファベット降順
- "534a" > 56→数値ではない文字列が数値として比較されると、数値を文字列に変換する。降順比較
- abs(-6) > 10 / 2→ただの計算式。※abs()は関数
falseになるもの
booleanのfalse/数値の0or0.0/空文字" "/文字列の"0"/要素が空の配列/null
配列の添え字
バラバラに書かれていても、for文では添え字順になる。
反対にforeach文は配列に代入された順序でループする。
たとえ、配列内が英語で「one, two...」とあっても順序には関係ない。
sort(対象配列[比較方法])
配列内容を並び替える。ちなみに、昇順は0→1、降順は1→0。戻り値はbool。また、降順には先頭に「r」がつく。
通常配列
- sort():昇順。基準:値。キーの扱い:リセット(0、1、2...)
sortはキーがリセットされるため、$〇〇[0] => 'A' みたいな添え字がリセットされる。
連想配列
- asort():昇順。基準:値。キーの扱い:維持される。
- ksort():昇順。基準:キー。キーの扱い:維持される。
多次元配列
$array[0][1]の様に示すもの。配列番号は0から始まる。
関数宣言の注意事項
デフォルト値に変数は使えない。
間違い(エラーになる)
<?php
$name_defo = "ゲスト";
function welcome($name = $name_defo){}
?>正解
<?php
function welcome($name = "ゲスト"){}
//文字列や定数、配列ならOK
?>普通の関数の注意点
普通の関数は呼び出し後に定義してもいい。
ただし、if文など特定の条件の場合は呼び出し前に定義。
PHPは事前にファイル全体を読み込んでいる。
