算术运算符
还记得学校里学到的基本数学知识吗?就和它们一样。
例子 | 名称 | 结果 |
---|---|---|
-$a | 取反 | $a的负值。 |
$a + $b | 加法 | $a和$b的和。 |
$a - $b | 减法 | $a和$b的差。 |
$a * $b | 乘法 | $a和$b的积。 |
$a / $b | 除法 | $a除以$b的商。 |
$a % $b | 取模 | $a除以$b的余数。 |
除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和$a的符号相同。例如:
<?phpecho (5 % 3)."\n"; // prints 2echo (5 % -3)."\n"; // prints 2echo (-5 % 3)."\n"; // prints -2echo (-5 % -3)."\n"; // prints -2?>
参见手册中的数学函数。
User Contributed Notes
<a name="113646" "="">
hassan dot beydoun at live dot com 10-Nov-2013 04:49
<?php//using range function() //$numbers = array;range = value$numbers= range (1,100);// foreach ($array as $value) //{Do something with $value}foreach ($numbers as $value) {echo "<p>This is number: $value</P>";}?>
antickon at gmail dot com 29-Mar-2012 08:04
not listed here is the absolutely useless unary plus.<?php $a = -3;$a = +$a;var_dump( $a ); // int(-3)
TheWanderer 05-Jun-2008 12:52
It is worth noticing that when working with large numbers, most noticably using the modulo operator, the results depend on your CPU architecture. Therefore, running a decent 64-bit machine will be to your advantage in case you have to perform complex mathematical operations. Here is some example code - you can compare its output on x86 and x86_64 machines:<?php/* tested under PHP 5.2.6-1 with Suhosin-Patch 0.9.6.2 (cli) on both i386 and amd64, Debian lenny/sid */$a = 2863311530;$b = 256;$c = $a % $b; echo "$c <br />\n"; echo (2863311530 % 256)." <br />\n"; /* directly with no variables, just to be sure */?> The code is expected to produce '170' if working correctly (try it in spreadsheet software).
Jonathon Reinhart 16-Oct-2006 11:11
A very simple yet maybe not obvious use of the modulus (%) operator is to check if an integer is odd or even.<?php if (($a % 2) == 1) { echo "$a is odd." ;} if (($a % 2) == 0) { echo "$a is even." ;}?> This is nice when you want to make alternating-color rows on a table, or divs.<?php for ($i = 1; $i <= 10; $i++) { if(($i % 2) == 1) //odd {echo "<div class=\"dark\">$i</div>";} else //even {echo "<div class=\"light\">$i</div>";} }?>
glenn at benge dot co dot nz 06-Oct-2004 08:28
a real simple method to reset an integer to a the next lowest multiple of a divisor $startSeq = $startSeq - ($startSeq % $entriesPerPage); if $startSeq was already a multiple, then " $startSeq % $entriesPerPage " will return 0 and $startSeq will not change.
info at sima-pc dot com 01-May-2004 11:48
<a name="37573" "=""> Note that operator % (modulus) works just with integers (between -214748348 and 2147483647) while fmod() works with short and large numbers. Modulus with non integer numbers will give unpredictable results.
soren at byu dot edu 20-Nov-2003 04:49
Exponentiation doesn't use ^ or ** as you might be used to with other languages. To calculate "z equals y to the x" use: $z = pow(y,x)
发表评论 取消回复