【问题标题】:Conversion to string or int type in PHP在 PHP 中转换为 string 或 int 类型
【发布时间】:2016-03-19 17:58:54
【问题描述】:

我在尝试将一些数值转换为字符串或整数时遇到了一些问题。

$value = 0180; //without format
$conversion = (string) $value;
$conversionInt = (int) $value;

该代码给了我值“1”,我不知道如何获得值“180”(这是我需要的)。我也尝试了 php 中的 strval() 函数,结果相同。

【问题讨论】:

  • 带前导零的数字被视为八进制值,0180 是无效的八进制值...RTFM

标签: php type-conversion


【解决方案1】:

阅读文档here

 <?php

$value = "0180"; //without format it is octal notation, with format it is a string
$conversion = (string) $value;
$conversionInt = intval($value);
echo $conversion;
echo "ad";
echo $conversionInt;exit;

【讨论】:

    【解决方案2】:

    改成这样:

    $value = "0180";
    $conversion = $value;
    $conversionInt = (int) $value;
    

    【讨论】:

    • 一个好的答案解释了为什么;糟糕的答案只是说“这样做”.....您的答案属于哪一类?
    【解决方案3】:

    这是一个八进制数。 PHP 将其视为八进制,因此如果您自己键入值,请在引号中键入。如果您将值作为返回值,那么它是一个字符串,而不是一个数字。所以,如果它是一个字符串,那么你可以使用 ltrim:

    $str = ltrim('0180', '0');
    

    为什么当你输入八进制时它给出的结果是“1”,因为在 PHP 7 之前,如果在八进制整数(即 8 或 9)中给出了无效数字,其余的号码被忽略。从 PHP 7 开始,会发出解析错误 (PHP Manual)。在您的情况下,这个无效数字是“8”,所以只有一个有效数字:“1”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多