PHP 7.4.12 Released!

Vordefinierte Konstanten

Die aufgelisteten Konstanten stehen immer zur Verfügung, da sie zum Grundbestand von PHP gehören.

Mathematische Konstanten
Konstante Wert Beschreibung Verfügbarkeit
M_PI 3.14159265358979323846 Pi  
M_E 2.7182818284590452354 e  
M_LOG2E 1.4426950408889634074 log_2 e  
M_LOG10E 0.43429448190325182765 log_10 e  
M_LN2 0.69314718055994530942 log_e 2  
M_LN10 2.30258509299404568402 log_e 10  
M_PI_2 1.57079632679489661923 pi/2  
M_PI_4 0.78539816339744830962 pi/4  
M_1_PI 0.31830988618379067154 1/pi  
M_2_PI 0.63661977236758134308 2/pi  
M_SQRTPI 1.77245385090551602729 sqrt(pi) PHP 5.2.0
M_2_SQRTPI 1.12837916709551257390 2/sqrt(pi)  
M_SQRT2 1.41421356237309504880 sqrt(2)  
M_SQRT3 1.73205080756887729352 sqrt(3) PHP 5.2.0
M_SQRT1_2 0.70710678118654752440 1/sqrt(2)  
M_LNPI 1.14472988584940017414 log_e(pi) PHP 5.2.0
M_EULER 0.57721566490153286061 Euler-Konstante PHP 5.2.0
PHP_ROUND_HALF_UP 1 n,5 wird aufgerundet PHP 5.3.0
PHP_ROUND_HALF_DOWN 2 n,5 wird abgerundet PHP 5.3.0
PHP_ROUND_HALF_EVEN 3 n,5 wird zur nächsten geraden Zahl gerundet PHP 5.3.0
PHP_ROUND_HALF_ODD 4 n,5 wird zur nächsten ungeraden Zahl gerundet PHP 5.3.0
NAN NAN (als Fließkommazahl) Not A Number (Keine Zahl)  
INF INF (als Fließkommazahl) infinite (unendlich)  

Alle Konstanten, die oben ohne PHP-Version angegeben sind, stehen seit PHP 5.0.0 zur Verfügung.

add a note add a note

User Contributed Notes 6 notes

up
28
md2perpe at gmail dot com
5 years ago
I just learnt of INF today and found out that it can be used in comparisons:

    echo 5000 < INF ? 'yes' : 'no';       // outputs 'yes'
    echo INF < INF ? 'yes' : 'no';        // outputs 'no'
    echo INF <= INF ? 'yes' : 'no';       // outputs 'yes'
    echo INF == INF ? 'yes' : 'no';       // outputs 'yes'

You can also take its negative:

    echo -INF < -5000 ? 'yes' : 'no';    // outputs 'yes'

Division by INF is allowed:

    echo 1/INF;    // outputs '0'
up
17
Hayley Watson
8 years ago
There are also the predefined PHP_INT_MAX and PHP_INT_SIZE constants, that describe the range of possible integer values.
up
4
Hayley Watson
3 years ago
From PHP 7.2.0, the PHP_FLOAT_* constants are provided to describe the properties of floating point numbers that can be stored; PHP_FLOAT_MAX, for example, is analogous to PHP_INT_MAX and represents the largest possible floating-point number.
up
1
pemapmodder1970 at gmail dot com
4 years ago
Although INF can be used for comparison against normal numbers and as a directed number, and behaves as reciprocal of zero, it is not like limit INF tends to infinity. These operations do not work:

<?php
var_dump
(INF / INF); // float(NAN)
var_dump(INF - INF); // float(NAN)
?>

However, it works with arc-tangent:
<?php
var_dump
(atan(INF) / M_PI); // float(0.5)
var_dump(atan2(INF, INF) / M_PI); // float(0.25)
var_dump(atan2(1, INF) / M_PI); // float(0)
?>
up
0
steve at websmithery dot co dot uk
3 years ago
Another observation on INF.

Division by zero results in INF:

<?php
var_dump
(1/0); // float(INF)
?>

BUT a 'Division by zero' warning is issued.
up
-1
Kira-Bianca dot Hinz at web dot de
6 months ago
Caution when using variables with the value NAN (or directly NAN, which would not be logical) if the value is converted in any form (integer, string or other non-float format)!
In that case, NAN is converted to 0. (e.g. as an index in an array, argument of a method that takes it as a non-float parameter, etc.). This bug has been reported several times, but is still present in the current version PHP 7.3.15.

Example 1:
$array = [0 =>  'zero', 1 => 'one', 2 => 'two'];
$index = NAN;
echo $array[$index]; // echo 'zero' and not as axcepted throws an exception or at least a warning 'undefined offset NAN ...'

Example 2:
function f((int) $p) { return $p; }
echo f(NAN); // echo 0 because the argument (NAN) has been converted to integer (0)

It would have to be checked in both cases explicitly for is_nan():
1: if(is_nan($index)){
      <throw Exception>
   }else{
      echo $array[$index];
   };

2: function f($p){ // without converting!!!
      if(is_nan($p)){
         <throw Exception>
      }else{
         return (int)$p; // actually a correct conversion  to Integer would have to be checked because the parser does not check this here.
      };
   }
To Top