PHP勉強2日目まとめ

ノートにまとめたものをこちらにも書いていくスタイル パート2
後々、逆引き用のまとめページも作るよ
連続した文字を出力
地道に繋げる for文+.=
結合代入演算子を使うとfor文を回している間連結していく。
.=は、$result = $result . "*";と同じ形。
<?php
$result = "";
for(~){
$result .= "*";
}
echo $result;
?>ちなみに、for文に「$result = "";」を宣言しておかないとfor文の外で使うこと(echo出力とか)ができない。エラー(正確にはWarning[警告])はかれる。予期しない動作の原因になるらしい。

ガチ焦りする。初期化大事。
簡単だねリピート関数 str_repeat()
for文を使うほどでもないなって時(簡単な文字を〇回分繰り返すとか)はこっちを使うと処理が速い。
<?php
echo str_repeat("*", 10); // *が10個リピートされる
?>文字列で最後の1文字を取得
substr():指定した半角英数字文字列の最後の1文字を取得。
<?php
substr("指定文字列", 負の値); //負の値を指定すると最後から〇番目を取得になる
/* --- 実際の出力 --- */
echo substr("Apple", -1); //出力:e
?>
マルチバイトなら?日本語は?
mb_substr();を使用。substrは半角英数のみのため、全角文字を扱うと文字化けしてしまう。また、日本語(マルチバイト)の時は、mb_がつく。
<?php
mb_substr("指定文字列", -1, 1, "UTF-8");
/* --- 実際の出力 --- */
echo mb_substr("りんご", -1, 1, "UTF-8"); //出力:ご
echo mb_substr("りんご", -1); //出力:ご
?>1番目の指定文字列、2番目に取り出し開始位置指定(負の値を使い最後から〇番目)までは一緒だが、3番目に取り出す文字数、4番目に文字コードを指定する。
mb_substr("文字列", -1) のように、2番目の引数だけで止めても「最後から1文字目以降のすべて」を取得できる。

ちなみに、PHP8.0以降では文字コードを省略しても自動判別してくれるらしい。
小数点以下を切り捨てて整数
小数点以下を切り捨てて整数にするには3種類方法がある。
- floor():小数部分を切り捨て【float型】
- intval():浮動小数値→整数値へ単純切り捨て【int型】
- (int)キャスト:intvalと挙動は一緒【int型】
<?php
/* --- floor() --- */
echo floor(3.1); //出力:3
echo floor(-3.9); //出力:4 数値線上で左側(より小さい)整数になる
/* --- intval() --- */
echo intval(3.9); //出力:3
echo intval(-3.9); //出力:3
/* --- (int) --- */
echo (int)3.9; //出力:3
?>intval()|(int):0に向かって切り捨てる(単純に少数を消す)。
floor:マイナス無限大に向かって切り捨てる
小数点以下切り上げ
- ceil():小数点以下を切り上げる。戻り値はfloat型
<?php
echo ceil(4.3); //出力:5
echo ceil(9.999); //出力:10
echo ceil(-3.14); //出力:-3
?>小数点以下の四捨五入
四捨五入したい場合はround()を使う。
round():小数点第1位を四捨五入(デフォルト値)
<?php
echo round(3.1413); //出力:3
echo round(3.9581); //出力:4
?>小数点第2位や、小数点第3位を四捨五入したい場合は以下の通り。
<?php
round(数値, 小数点以下の残したい桁数); //小数点第〇位を四捨五入
/* --- 実際の出力 --- */
echo round(3.1415, 2); //出力:3.14→小数点第2位までを残す(第3位を四捨五入)
?>
round()の第2引数に負の数字を入れると、10の位、100の位で四捨五入できるらしい
金額の端数計算とかでいいかもね。ただし、戻り値はfloat型なので注意。
また、.5 はデフォルトでは切り上げ(モード設定で挙動も変えれる?)
<?php
round(1234, -2); //1200
?>値の真ん中を取得したい
sort($配列名, $flags = SORT_REGULAR):配列の中身を昇順に並べる。(降順の場合は、rsortになる)
第2引数でソートの動作を修正できる。割と使うであろうモノは以下の通り
- SORT_NUMERIC:数値として項目を比較。確実に数値が小さいもの順になる。
- SORT_STRING:データを文字列として項目を比較。100と15という文字を、2つ目の文字 0と5を比較して、0が小さいから100,15の順にsortされる。
順番に並べてから取得していく。
<?php
//入力文字:1 5 3
$array = explode(" ", trim(fgets(STDIN))); //入力文字を配列に入れる。
sort($array); //真ん中を出力する→$array[1]
?>
真ん中が分かんないときは?

配列内の個数を数えて中央値を計算するぞい
<?php
$array = explode(" ", trim(fgets(STDIN))); //入力文字を配列に入れる。
$count = count($array); //配列個数を数える
$middle_index = floor($count / 2); //中央値を計算
if($count % != 0){
//奇数だったら真ん中出力
echo $array[$middle_index];
} else {
//偶数だったら真ん中二つを足して2で割る
$md = ($array[$middle_index - 1] + $array[$middle_index]) / 2;
echo $md . "\n";
}
?>