PHP.mk документација

is_numeric

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.is-numeric.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.is-numeric.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
is_numeric

Референца за `function.is-numeric.php` со подобрена типографија и навигација.

function.is-numeric.php

is_numeric

(PHP 4, PHP 5, PHP 7, PHP 8)

is_numeric Finds whether a variable is a number or a numeric string

= NULL

is_numeric(mixed $value): bool

Проверува дали променливата е број или нумеричка низа нумерички стринг.

Параметри

value

Променливата што се оценува.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true if value Одредува дали дадената променлива е број или нумерички стринг, false otherwise.

Дневник на промени

Верзија = NULL
8.0.0 е број или"42 "Нумеричките низи што завршуваат со празно место ( trueсега ќе вратат false е надвор од опсег; претходно,

Примери

Пример #1 is_numeric() examples

<?php
$tests
= array(
"42",
1337,
0x539,
02471,
0b10100111001,
1337e0,
"0x539",
"02471",
"0b10100111001",
"1337e0",
"not numeric",
array(),
9.1,
null,
'',
);

foreach (
$tests as $element) {
if (
is_numeric($element)) {
echo
var_export($element, true) . " is numeric", PHP_EOL;
} else {
echo
var_export($element, true) . " is NOT numeric", PHP_EOL;
}
}
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

'42' is numeric
1337 is numeric
1337 is numeric
1337 is numeric
1337 is numeric
1337.0 is numeric
'0x539' is NOT numeric
'02471' is numeric
'0b10100111001' is NOT numeric
'1337e0' is numeric
'not numeric' is NOT numeric
array (
) is NOT numeric
9.1 is numeric
NULL is NOT numeric
'' is NOT numeric

Пример #2 is_numeric() . Претходно,

<?php
$tests
= [
" 42",
"42 ",
"\u{A0}9001", // non-breaking space
"9001\u{A0}", // non-breaking space
];

foreach (
$tests as $element) {
if (
is_numeric($element)) {
echo
var_export($element, true) . " is numeric", PHP_EOL;
} else {
echo
var_export($element, true) . " is NOT numeric", PHP_EOL;
}
}
?>

Излез од горниот пример во PHP 8:

' 42' is numeric
'42 ' is numeric
' 9001' is NOT numeric
'9001 ' is NOT numeric

Излез од горниот пример во PHP 7:

' 42' is numeric
'42 ' is NOT numeric
' 9001' is NOT numeric
'9001 ' is NOT numeric

Види Исто така

  • Нумерички низи
  • ctype_digit() со празно место
  • is_bool() - Дознајте дали променливата е булова
  • is_null() - Дознајте дали променливата е null
  • is_float() - Дознајте дали типот на променливата е float
  • is_int() - Дознајте дали променливата е цел број
  • is_string() - Finds whether a variable is a scalar
  • is_object() - Дознајте дали променливата е објект
  • is_array() - Пронајдете дали променлива е низа
  • filter_var() - Провери за нумерички карактер(и)

Белешки од корисници Управување со PDO конекции

- Филтрира променлива со одреден филтер
пред 15 години
Note that the function accepts extremely big numbers and correctly evaluates them.

For example:

<?php
    $v = is_numeric ('58635272821786587286382824657568871098287278276543219876543') ? true : false;
    
    var_dump ($v);
?>

The above script will output:

bool(true)

So this function is not intimidated by super-big numbers. I hope this helps someone.

PS: Also note that if you write is_numeric (45thg), this will generate a parse error (since the parameter is not enclosed between apostrophes or double quotes). Keep this in mind when you use this function.
sobolanx на gmail точка com
пред 9 години
for strings, it return true only if float number has a dot

is_numeric( '42.1' )//true
is_numeric( '42,1' )//false
tanguy_barsik на hotmail точка com
19 години пред
is_numeric fails on the hex values greater than LONG_MAX, so having a large hex value parsed through is_numeric would result in FALSE being returned even though the value is a valid hex number
moskalyuk на gmail точка com
12 години пред
Apparently NAN (Not A Number) is a number for the sake of is_numeric(). 

<?php 
echo "is "; 
if (!is_numeric(NAN)) 
 echo "not "; 
 echo "a number"; 
?> 

Outputs "is a number". So something that is NOT a number (by defintion) is a number...
ben на chico точка com
пред 22 години
Note that this function is not appropriate to check if "is_numeric" for very long strings. In fact, everything passed to this function is converted to long and then to a double. Anything greater than approximately 1.8e308 is too large for a double, so it becomes infinity, i.e. FALSE. What that means is that, for each string with more than 308 characters, is_numeric() will return FALSE, even if all chars are digits.

However, this behaviour is platform-specific.

http://www.php.net/manual/en/language.types.float.php

In such a case, it is suitable to use regular expressions:

function is_numeric_big($s=0) {
  return preg_match('/^-?\d+$/', $s);
}
12 белешки
пред 17 години
regarding the global vs. american numeral notations, it should be noted that at least in japanese, numbers aren't grouped with an extra symbol every three digits, but rather every four digits (for example 1,0000 instead of 10.000). also nadim's regexen are slightly suboptimal at one point having an unescaped '.' operator, and the whole thing could easily be combined into a single regex (speed and all).

adjustments:

<?php
$eng_or_world = preg_match
  ('/^[+-]?'. // start marker and sign prefix
  '(((([0-9]+)|([0-9]{1,4}(,[0-9]{3,4})+)))?(\\.[0-9])?([0-9]*)|'. // american
  '((([0-9]+)|([0-9]{1,4}(\\.[0-9]{3,4})+)))?(,[0-9])?([0-9]*))'. // world
  '(e[0-9]+)?'. // exponent
  '$/', // end marker
  $str) == 1;
?>

i'm sure this still isn't optimal, but it should also cover japanese-style numerals and it fixed a couple of other issues with the other regexen. it also allows for an exponent suffix, the pre-decimal digits are optional and it enforces using either grouped or ungrouped integer parts. should be easier to trim to your liking too.
kouber на saparev точка com
3 години пред
Note that is_numeric() will evaluate to false for number strings using decimal commas.

is_numeric('0.11');
Output: true

is_numeric('0,11');
Output: false
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.