Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【PHP】数字・配列を扱う関数例

こんにちは😊Kintarouです。

現在エンジニア転職を目指してTECH CAMPにてプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人が働きやすいシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


今回参考にさせて頂いたサイト様🙇‍♂️
dotinstall.com


小数点以下を処理する

小数点以下の処理に関しては以下の3つの関数が使えます。

関数名 小数点以下の処理
ceil 切り上げ
floor 切り捨て
round 四捨五入

下記で一度試してみます。

<?php

$p = 3.14159;

echo ceil($p) . PHP_EOL;
#=>4

echo floor($p) . PHP_EOL;
#=>3

echo round($p) . PHP_EOL;
#=>3

#roundの第二引数に数字を入れると、その数字桁になるように四捨五入する。
echo round($p, 3) . PHP_EOL;
#=>3.142

乱数を作る

mt_randという関数を使います。乱数の範囲を指定して、出力毎にその範囲内で乱数を作ります。

<?php

echo mt_rand(1, 6) . PHP_EOL;
#=>6

echo mt_rand(1, 6) . PHP_EOL;
#=>2

同じコードですが、違う数字が出力されています。

配列の要素を変更する

配列の先頭や末尾の要素を追加・削除する場合は以下4つの関数があります。
ただ、後で紹介するarray_spliceで同じ事が出来るので飛ばしてもいいかもです。

関数名 配列の処理
array_unshift 先頭の要素を追加
array_push 末尾の要素を追加
array_shift 先頭の要素を削除
array_pop 末尾の要素を削除
<?php

$scores = [50, 60, 70];

array_unshift ($scores, 30, 40);
array_push ($scores, 80, 90);

#配列末尾に1つだけ要素を足すのであれば、以下のようにすれば大丈夫です。
$scores[] = 100;

print_r($scores);

#=>Array
#=>(
#=>    [0] => 30
#=>    [1] => 40
#=>    [2] => 50
#=>    [3] => 60
#=>    [4] => 70
#=>    [5] => 80
#=>    [6] => 90
#=>    [7] => 100
#=>)

#続けて削除を行いますが、array_shiftもarray_popも削除は要素1つずつしか出来ません。

array_shift($scores);
array_pop($scores);

print_r($scores);

#=>Array
#=>(
#=>    [0] => 40
#=>    [1] => 50
#=>    [2] => 60
#=>    [3] => 70
#=>    [4] => 80
#=>    [5] => 90
#=>)

配列の一部を抜き出して新しい配列を作る

array_sliceを使います。
もとの配列はそのままに、新しい配列を作ります。

<?php

$scores = [30, 40, 50, 60];

#$scoresの添字1から2つ要素を抜き出します。
$partial = array_slice($scores, 1, 2);
print_r($partial);

#=>Array
#=>(
#=>    [0] => 40
#=>    [1] => 50
#=>)

配列の要素を削除、置換する

array_spliceで行います。こちらは元の配列を削除、置換します。
要素の間(空欄)に置換(実質追加)する事もできるので、上のarray_unshiftなんかは使わなくてもいいように思います😌

<?php

$scores = [30, 40, 50, 60, 70, 80];

#まずは$scoresの添字2から3つの要素を削除します。
array_splice($scores, 2, 3);
print_r($scores);

#=>Array
#=>(
#=>    [0] => 30
#=>    [1] => 40
#=>    [2] => 80
#=>)

#次に上の配列の添字1を500に置換します。
array_splice($scores, 1, 1, 500);
print_r($scores);

#=>Array
#=>(
#=>    [0] => 30
#=>    [1] => 500
#=>    [2] => 80
#=>)

#次に添字2の部分に100を追加します。(今添字2にある80はずれ込んで添字3となります)
array_splice($scores, 2, 0, 100);
print_r($scores);

#=>Array
#=>(
#=>    [0] => 30
#=>    [1] => 500
#=>    [2] => 100
#=>    [3] => 80
#=>)

#最後も添字2の部分に追加をしますが、複数の要素をまとめて追加します。
#複数まとめて追加する場合は配列形式にします。
array_splice($scores, 2, 0, [200, 300]);
print_r($scores);

#=>Array
#=>(
#=>    [0] => 30
#=>    [1] => 500
#=>    [2] => 200
#=>    [3] => 300
#=>    [4] => 100
#=>    [5] => 80
#=>)

配列をソートする

配列の並び替えを行います。
例は数字ですが、文字列の場合もアルファベット順で並び替えてくれます。

関数名 配列の処理
sort 昇順で並び替え
rsort 降順で並び替え
shuffle ランダムに並び替え
array_rand 配列の添字をランダムに取得

※array_randは元の配列に対しての操作ではありません。

<?php

$scores = [40, 50, 20, 30];

sort($scores);
print_r($scores);

Array
#=>(
#=>    [0] => 20
#=>    [1] => 30
#=>    [2] => 40
#=>    [3] => 50
#=>)

shuffle($scores);
print_r($scores);

Array
#=>(
#=>    [0] => 30
#=>    [1] => 50
#=>    [2] => 20
#=>    [3] => 40
#=>)

rsort($scores);
print_r($scores);

Array
#=>(
#=>    [0] => 50
#=>    [1] => 40
#=>    [2] => 30
#=>    [3] => 20
#=>)

$picked = array_rand($scores, 2);
echo $scores[$picked[0]] . PHP_EOL;

#=>50

echo $scores[$picked[1]] . PHP_EOL;

#=>20

以上、どなたかの参考になれば幸いです😊