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は事前にファイル全体を読み込んでいる。

  • X