English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP基本教程

PHP高度教程

PHP & MySQL

PHPリファレンスマニュアル

PHPの数学演算子

このチュートリアルでは、PHPで数学演算を行う方法を学びます。

数学演算の実行

PHPには、簡単な加算や減算から高度な計算までの全ての操作をサポートする複数の内蔵関数があります。すでに、PHP演算子章では基本的な数学演算の実行方法について学びました。もう一つの例を見てみましょう:

<?php
echo 7 + 3; // 出力: 10
echo '<br>';
echo 7 - 2; // 出力: 5
echo '<br>';
echo 7 * 2; // 出力: 14
echo '<br>';
echo 7 / 2; // 出力: 3.5
echo '<br>';
echo 7 % 2; // 出力: 1
?>
テストを見て‹/›

各数学演算には特定の優先順位があります;通常、乗算や除算は加算や減算よりも前に実行されます。しかし、括弧はこの優先順位を変更できます。操作の優先順位に関わらず、常に最初に括弧内の式を評価します。以下の例を参照してください:

<?php
echo 5 + 4 * 10;         // 出力: 45
echo '<br>';
echo (5 + 4) * 10;       // 出力: 90
echo '<br>';
echo 5 + 4 * 10 / 2;     // 出力: 25
echo '<br>';
echo 8 * 10 / 4 - 2;     // 出力: 18
echo '<br>';
echo 8 * 10 / (4 - 2);   // 出力: 40
echo '<br>';
echo 8 + 10 / 4 - 2;     // 出力: 8.5
echo '<br>';
echo (8 + 10) / (4 - 2); // 出力: 9
?>
テストを見て‹/›

以下の部分では、数学演算を実行するために最もよく使用されるいくつかの内蔵のPHP関数について学びます。

查找数字的绝对值

を使用して、abs()関数で数字の絶対値を見つけることができます。整数または浮点数の絶対値、以下の例を参照してください:

<?php
echo abs(5) . "<br>";    // 出力: 5 (integer)
echo abs(-5) . "<br>";   // 出力: 5 (integer)
echo abs(4.2) . "<br>";  // 出力: 4.2 (double/float)
echo abs(-4.2) . "<br>"; // 出力: 4.2 (double/float)
?>
テストを見て‹/›

ご覧の通り、指定された数字が負の場合、返される値は正です。ただし、数字が正の場合、この関数はただ数字を返します。

向上或向下舍入小数值

ceil()関数は小数を次の最高整数に切り上げるために使用され、floor()関数は小数を次の最小整数に切り下げるために使用されます。以下の例を参照してください:

<?php
//分数向上取整
echo ceil(4.2) . "<br>";    // 出力: 5
echo ceil(9.99) . "<br>";   // 出力: 10
echo ceil(-5.18) . "<br>";  // 出力: -5
 
//分数向下舍入
echo floor(4.2) . "<br>";    // 出力: 4
echo floor(9.99) . "<br>";   // 出力: 9
echo floor(-5.18) . "<br>";  // 出力: -6
?>
テストを見て‹/›

找出数字的平方根

sqrt()関数を使用して正の数の平方根を求めることができます。数が負の場合はNaNを返します。以下に例を示します:

<?php
echo sqrt(9) . "<br>";   // 出力: 3
echo sqrt(25) . "<br>";  // 出力: 5
echo sqrt(10) . "<br>";  // 出力: 3.1622776601684
echo sqrt(-16) . "<br>"; // 出力: NAN
?>
テストを見て‹/›

产生随机数

rand()関数はランダム数を生成するために使用できます。min、maxパラメータを渡して範囲を指定することができます。以下の例を参照してください:

<?php
//生成了一些随机数
echo rand() . "<br>";
echo rand() . "<br>";
 
//生成了一些介于1から10の間のランダム数(含む)1と10)
echo rand(1, 10) . "<br>";
echo rand(1, 10) . "<br>";
?>
テストを見て‹/›

rand()関数を呼び出した際にオプションのmin、maxパラメータが指定されていない場合、0とgetrandmax()の間の仮乱数を返します。getrandmax()関数は最大のランダム値を表示し、Windowsプラットフォームではただし32767したがって、大きい値が必要な場合は、32767の範囲、minとmaxパラメータを簡単に指定できます。

十進数と二進数の相互変換

decbin()関数は十進数を二進数に変換するために使用されます。一方、bindec()関数は二進数を十進数に変換するために使用されます。

<?php
//十進数を二進数に変換する
echo decbin(2) . "<br>";    // 出力: 10  
echo decbin(12) . "<br>";   // 出力: 1100  
echo decbin(100) . "<br>";  // 出力: 1100100
 
//二進数を十進数に変換する
echo bindec(10) . "<br>";       // 出力: 2 
echo bindec(1100) . "<br>";     // 出力: 12  
echo bindec(1100100);  // 出力: 100
?>
テストを見て‹/›

十進数と十六進数の相互変換

dechex()関数は十進数を十六進数の表現形式に変換するために使用されます。一方、hexdec()関数は十六進数文字列を十進数に変換するために使用されます。

<?php
//十進数を十六進数に変換する
echo dechex(255) . "<br>";  // 出力: ff
echo dechex(196) . "<br>";  // 出力: c4
echo dechex(0) . "<br>";    // 出力: 0
 
//十六進数を十進数に変換する
echo hexdec('ff') . "<br>";  // 出力: 255
echo hexdec('c4') . "<br>";  // 出力: 196
echo hexdec(0);     // 出力: 0
?>
テストを見て‹/›

十進数と八進数の相互変換

decoct()関数は十進数を八進数の表現形式に変換するために使用されます。octdec()関数は八進数を十進数に変換するために使用されます。

<?php
//十進数を八進数に変換する 
echo decoct(12) . "<br>";   // 出力: 14
echo decoct(256) . "<br>";  // 出力: 400
echo decoct(77) . "<br>";   // 出力: 115
 
//八進数を十進数に変換する
echo octdec('14') . "<br>";   // 出力: 12
echo octdec('400') . "<br>";  // 出力: 256
echo octdec('115);  // 出力: 77
?>
テストを見て‹/›

数字を一つの基数から別の基数に変換する

base_convert()関数は数字を一つの基数から別の基数に変換するために使用できます。例えば、十進数を変換できます(基数10)を二進数に変換する(基数2)を十六進数に変換する(基数16)を八進数に変換する(基数8))、八進数を十六進数、十六進数を十進数など、順に変換します。

この関数は3つの引数を受け取ります:変換する数、現在の基数、変換する基数。基本的な语法は以下の通りです:

base_convert(number,frombase,tobase);

frombaseとtobaseは2から36の間(含む)2と36)。底数は10の数字はアルファベットa-zは、aは10、bは11、zは35。これはこの関数の動作を説明するシンプルな例です:

<?php
//十進数を二進数に変換する
echo base_convert('12', 10, 2) . "<br>";  // 出力: 1100
//二進数を十進数に変換する
echo base_convert('1100', 2, 10) . "<br>";  // 出力: 12
 
//十進数を十六進数に変換する
echo base_convert('10889592', 10, 16) . "<br>";  // 出力: a62978
//十六進数を十進数に変換する
echo base_convert('a62978', 16, 10) . "<br>";  // 出力: 10889592
 
//十進数を八進数に変換する
echo base_convert('82', 10, 8) . "<br>";  // 出力: 122
//八進数を十進数に変換する
echo base_convert('122', 8, 10) . "<br>";  // 出力: 82
 
//十六進数を八進数に変換する
echo base_convert('c2c6a8', 16, 8) . "<br>";  // 出力: 60543250
//八進数を十六進数に変換する
echo base_convert('60543250', 8, 16) . "<br>";  // 出力: c2c6a8
 
//八進数を二進数に変換する
echo base_convert('42', 8, 2) . "<br>";  // 出力: 100010
//二進数を八進数に変換する
echo base_convert('100010', 2, 8) . "<br>";  // 出力: 42
 
//十六進数を二進数に変換する
echo base_convert('abc', 16, 2) . "<br>";  // 出力: 101010111100
//二進数を十六進数に変換する
echo base_convert('101010111100', 2, 16);  // 出力: abc
?>
テストを見て‹/›

注意:base_convert()関数は常に文字列値を返します。返される値が10底に設定すると、得られる文字列は計算中の数字文字列として使用でき、計算を実行する際にはPHPがそれを数値に変換します。