【问题标题】:How does strlen works with numbers?strlen 如何处理数字?
【发布时间】:2017-02-14 07:24:29
【问题描述】:

我试图弄清楚strlen() 如何找到数字的长度。当我尝试以下操作时:

echo strlen(00000000000000000000000000000000);

它输出1 但是当我尝试时

echo strlen(11111111111111111111111111111111111111111111111111111111);

它输出19。有时它确实像这个例子一样正常工作:

echo strlen(19);

strlen() 输出2。我知道我可以使用以下内容:

echo strlen('00000000000000000000000000000000');

它会输出32,但我想弄清楚它是如何处理数字的。

【问题讨论】:

  • 在基础数学中你学习了 000000 = 0 但 111111 !=1 因此所以.. 你可以强制它strlen((string)000000000000000000000000);
  • 好吧,但是111111111111111111111111111111111111111111111111111111111111111111111111 不等于 19
  • 长度为 61 但输出为 19

标签: php strlen


【解决方案1】:

因为strlen() 给出了字符串长度.. 00000000000000000000000000 不是字符串,直到它被写在引号中,例如 "00000000000000000000000000" 或 '000000000000000000000000000'。

那为什么strlen(00000000000000000000000000000000) 给出输出1 而strlen(11111111111111111111111111111111111111111111111111111111) 给出19?

由于整数00000000000000000000000000000000 = 0 ..此装置的长度为1。鉴于11111111111111111111111111111111111111111111111111111111不等于1,但11111111111111111111111111111111111111111111111111111111.因此它输出32。 P>

更多内容可以查看strlen()的文档

【讨论】:

  • 需要注意的是,这串1的长度为19,因为它太大而无法放入int,所以它被评估为float,然后转换为字符串“1.1111111111111E+71”。
【解决方案2】:

尝试echo 11111111111111111111 它将回显1.1111111111111E+19,这是19个字符,这就是长度为19的原因,但是如果您尝试echo 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,它将输出1.1111111111111E+100,如果您尝试获取它的长度,它将是20字符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2012-05-18
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多