数値


端数の切り上げ、切り捨てをする

四捨五入はround()
切り上げはceil()
切り捨てはfloor()
を使います。round()は第二引数に桁を指定することができます。

$plus = 34.567;
$minus = -34.567;
$plus2 = 34.467;
$minus2 = -34.467;

// ±関わらず四捨五入します
echo round($plus) . "\n";    // => 35
echo round($minus) . "\n";    // => -35
echo round($plus2) . "\n";    // => 34
echo round($minus2) . "\n";    // => -34
// 桁指定
echo round($plus, 1) . "\n";    // => 35.6
echo round($minus, 1) . "\n";    // => -35.6

// 数値的に大きい方へ切り上げます
echo ceil($plus) . "\n";    // => 35
echo ceil($minus) . "\n";    // => -34
echo ceil($plus2) . "\n";    // => 35
echo ceil($minus2) . "\n";    // => -34

// 数値的に小さい方へ切り下げます
echo floor($plus) . "\n";    // => 34
echo floor($minus) . "\n";    // => -35
echo floor($plus2) . "\n";    // => 34
echo floor($minus2) . "\n";    // => -35

ユニークなIDを生成する(uniqid)

uniqid()を使います。ただしこの関数はマイクロ秒単位の現在時刻を元にしているので推測される可能性が高いです。
ここではさらにハッシュ値をとることで推測されにくくしています。

echo md5(uniqid(rand(), true)) . "\n";    // => 2329310d8b70136e669c8f4b8effe8fc

小さい方、大きい方を返す(min, max)

min(), max()を使います。2つの引数を指定して小さい方、大きい方を返します。

$val1 = 0.123;
$val2 = 0.1234;
echo min($val1, $val2) . "\n";    // => 0.123
echo max($val1, $val2) . "\n";    // => 0.1234


絶対値を取る(abs)

abs()を使います

echo abs(123.456) . "\n";    // => 123.456
echo abs(-123.456) . "\n";    // => 123.456


ランダムな数値を生成する(mt_rand)

mt_rand()関数を使用します。デフォルト引数として0からmt_getrandmax()を取ります。
注意点として指定した引数の値を含む範囲のランダム値を返します。

echo mt_rand() . "\n";    // => 1528827506 など
echo mt_rand(10, 30) . "\n";    // => 27 など

一定のランダム値を生成する(mt_srand)

mt_srand()関数でシードを固定します。

mt_srand(10);
for($i=0 ; $i<5 ; $i++){
    echo mt_rand(10, 99) . "\n";
}    
mt_srand(10);
for($i=0 ; $i<5 ; $i++){
    echo mt_rand(10, 99) . "\n";
}
// => 共に 31, 36, 98, 55, 67 を返す

浮動小数点数を四捨五入する(round)

round()を使います。第2引数で精度を指定できます。

$precision = 1;

$val = 3.141;
echo round($val) . "\n";    // => 3
echo round($val, $precision) . "\n";    // => 3.1

$val = 3.151;
echo round($val, $precision) . "\n";    // => 3.2

// マイナス値の場合
$val = -3.141;
echo round($val) . "\n";    // => -3
echo round($val, $precision) . "\n";    // => -3.1

$val = -3.151;
echo round($val, $precision) . "\n";    // => -3.2


浮動小数点数を一番近い整数値に切り上げる(ceil)、切り下げる(floor)

ceil()関数で切り上げ、floor()関数で切り下げます。

$val = 10.1;
echo ceil($val) . "\n";    // => 11
echo floor($val) . "\n";    // => 10

$val = 10.555555;
echo ceil($val) . "\n";    // => 11
echo floor($val) . "\n";    // => 10

$val = -3.14;
echo ceil($val) . "\n";    // => -3
echo floor($val) . "\n";    // => -4


2進数,8進数,16進数から10進数に変換する(bindec, octdec, hexdec)

bindec()は2進数から10進数へ変換します。
octdec()は8進数から10進数へ変換します。
hexdec()は16進数から10進数へ変換します。

echo bindec(10) . "\n";    // => 2
echo octdec(10) . "\n";    // => 8
echo hexdec(10) . "\n";    // => 16

echo bindec(100) . "\n";    // => 4
echo octdec(100) . "\n";    // => 64
echo hexdec(100) . "\n";    // => 256


10進数から2進数,8進数,16進数に変換する(decbin, decoct, dechex)

decbin()は10進数から2進数へ変換します。
decoct()は10進数から8進数へ変換します。
dechex()は10進数から16進数へ変換します。

$val = 32;
echo decbin($val) . "\n";    // => 100000
echo decoct($val) . "\n";    // => 40
echo dechex($val) . "\n";    // => 20