久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

PHP數(shù)字字符串

2023-09-15 228

一、數(shù)字字符串概述

在 PHP 中,數(shù)字字符串是由數(shù)字組成的字符串,它可以用于表示整數(shù)、浮點數(shù)以及其他各種數(shù)值類型的數(shù)據(jù)。數(shù)字字符串的創(chuàng)建非常簡單,可以通過直接將數(shù)字賦值給一個變量來實現(xiàn)。如果一個 PHP string 可以被解釋為 int 或 float 類型,則它被視為數(shù)字字符串。

PHP 8.0.0 正式可用:

WHITESPACES \s*
LNUM [0-9]+
DNUM ([0-9]*)[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
INT_NUM_STRING {WHITESPACES} [+-]? {LNUM} {WHITESPACES}
FLOAT_NUM_STRING {WHITESPACES} [+-]? ({DNUM} | {EXPONENT_DNUM}) {WHITESPACES}
NUM_STRING ({INT_NUM_STRING} | {FLOAT_NUM_STRING})

PHP 也有前導數(shù)字字符串的概念。 這只是一個字符串,其開頭類似于數(shù)字字符串,后跟任何字符。

注意:任何包含字母 E 周圍是數(shù)字的字符串都將視為以科學計數(shù)法表示的數(shù)字。這會產(chǎn)生意想不到的效果。

<?php
var_dump("0D1" == "000"); // false, "0D1" 不是科學計數(shù)法
var_dump("0E1" == "000"); // true, "0E1" is 0 * (10 ^ 1), or 0
var_dump("2E1" == "020"); // true, "2E1" is 2 * (10 ^ 1), or 20
?>

二、使用字符串

當一個 string 需要被當作一個數(shù)字計算時,(例如:算術(shù)運算, int 類型聲明等),則采取以下步驟來確定結(jié)果:

1、如果 string 是數(shù)字,當 string 是整數(shù)字符串并且符合 int 類型的范圍限制(即是 PHP_INT_MAX 定義的值),則解析為 int ,否則解析為 float 。

2、如果上下文允許前導數(shù)字和一個 string,如果 string 的前導部分是整數(shù)數(shù)字字符串且符合 int 類型限制(由 PHP_INT_MAX 定義),則解析為 int ,否則解析為 float 。 此外,還會導致 E_WARNING 級別的錯誤。

3、如果 string 不是數(shù)字,則會拋出一個 TypeError 的異常。

三、PHP8.0.0之前

在 PHP 8.0.0 之前, 只有在前導空格的時候,string 才被認為是數(shù)字;如果它有尾隨空格,則該字符串被視為是前導數(shù)字。PHP 8.0.0 之前當在數(shù)字上下文中使用字符串時,它將執(zhí)行與上述相同的步驟,但有以下區(qū)別:

  • 使用前導數(shù)字字符串將導致 E_NOTICE 而不是 E_WARNING 錯誤。
  • 如果字符串不是數(shù)字,則會導致 E_WARNING 錯誤并返回 0 。

在 PHP 7.1.0 之前,則既不會導致 E_NOTICE,也不會導致 E_WARNING。

<?php
$foo = 1 + "10.5"; // $foo 是 float (11.5)
$foo = 1 + "-1.3e3"; // $foo 是 float (-1299)
$foo = 1 + "bob-1.3e3"; // PHP 8.0.0 起產(chǎn)生 TypeError;在此之前 $foo 是 integer (1)
$foo = 1 + "bob3"; // PHP 8.0.0 起產(chǎn)生 TypeError;在此之前 $foo 是 integer (1)
$foo = 1 + "10 Small Pigs"; // PHP 8.0.0 起,$foo 是 integer (11),并且產(chǎn)生 E_WARNING;在此之前產(chǎn)生 E_NOTICE
$foo = 4 + "10.2 Little Piggies"; // PHP 8.0.0 起,$foo 是 float (14.2),并且產(chǎn)生 E_WARNING;在此之前產(chǎn)生 E_NOTICE
$foo = "10.0 pigs " + 1; // PHP 8.0.0 起,$foo 是 float (11),并且產(chǎn)生 E_WARNING;在此之前產(chǎn)生 E_NOTICE
$foo = "10.0 pigs " + 1.0; // PHP 8.0.0 起,$foo 是 float (11),并且產(chǎn)生 E_WARNING;在此之前產(chǎn)生 E_NOTICE
?>
  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。