在PHP中转换为字符串或int类型

在PHP中转换为字符串或int类型,php,type-conversion,Php,Type Conversion,我在尝试将一些数值转换为字符串或整数时遇到一些问题 $value = 0180; //without format $conversion = (string) $value; $conversionInt = (int) $value; 代码给了我值“1”,我不知道如何才能得到值“180”(这是我需要的)。我也尝试了php中的strval()函数,得到了相同的结果。阅读文档 将其更改为: $value = "0180"; $conversion = $value; $conversionIn

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

$value = 0180; //without format
$conversion = (string) $value;
$conversionInt = (int) $value;
代码给了我值“1”,我不知道如何才能得到值“180”(这是我需要的)。我也尝试了php中的strval()函数,得到了相同的结果。

阅读文档

将其更改为:

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

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


当您将其键入八进制时,为什么它会给出精确的“1”,是因为在PHP7之前,如果在八进制整数(即8或9)中给出了无效数字,则会忽略该数字的其余部分。从PHP7开始,会发出一个解析错误()。在您的案例中,无效数字是“8”,因此只取一个有效数字:“1”。

前导零的数字被视为八进制值,
0180
是无效的八进制值。。。一个好的答案解释了原因;糟糕的答案只是说“做这个”。。。。。你的答案属于哪一类?
$value = "0180";
$conversion = $value;
$conversionInt = (int) $value;
$str = ltrim('0180', '0');