gpt4 book ai didi

PHP is_numeric - 当指数在字符串中时为 false

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:08 26 4
gpt4 key购买 nike

<?php

$val = '245E1';

var_dump($val); // return string(5) "245E1"

$n = is_numeric($val);
var_dump($n); // return bool(true)

问题:is_numeric 返回TRUE

问题:

  1. 如何将 $val 视为字符串,而不是数字?

  2. 如何禁用指数解释?

最佳答案

来自 is_numeric() 上的手册, 你会注意到有很多字符可以进入:

Numeric strings consist of optional sign, any number of digits, optional decimal part and optional exponential part. Thus +0123.45e6 is a valid numeric value. Hexadecimal (e.g. 0xf4c3b00c), Binary (e.g. 0b10100111001), Octal (e.g. 0777) notation is allowed too but only without sign, decimal and exponential part.

如果你想检查一个变量是否是整数类型,你可以使用is_int() , 对于花车,你可以使用 is_float() .但是请注意,例如对于 is_int(),您的变量实际上必须是整数类型,而不仅仅是数字字符串。您也可以使用 ctype_digit()为此,但是您的变量类型必须是字符串;或者具体来说,不是与 ASCII 字符的 ord() 相匹配的整数。

可能最简单的方法是使用 if (preg_match('#^\d+(\.\d+)?$#', $str)) 来验证您的变量类型因为只有数字。 (如果不欢迎可选小数,请从模式中删除括号中的表达式。)

另一个选项是 ctype_digit((string) $str) 并将变量转换为字符串类型以避免 ASCII 映射与整数类型发生冲突。如果您有小数点,这将不会返回 true。

ctype_digit 的 100000 次循环:0.0340 秒。 preg_match 的 100000 次循环:0.1120 秒。如果您只需要数字并且打算经常使用ctype_digit。除此以外;适合您的风格。

关于PHP is_numeric - 当指数在字符串中时为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com