首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php上的奇怪行为

php上的奇怪行为
EN

Stack Overflow用户
提问于 2009-08-14 20:31:55
回答 7查看 156关注 0票数 1

有人能告诉我为什么运行下面的代码会得到奇怪的结果吗?

代码语言:javascript
复制
<?php
class Bank
{
    var $ID;
    var $balance;
    var $name;
    function bank($name,$id,$balance=0)
    {
        $this->ID=$id;
        $this->balance=$balance;
        $this->name=$name;
    }
    function getBalance()
    {
        return $this->balance;
    }
    function setBalance($bal)
    {
        $this->balance=$bal;
    }
    function getId()
    {
        return $this->ID;
    }
    function setId($i)
    {
        $this->ID=$i;
    }
)
$b= new bank(yaniv,027447002, 15000);

现在,当我尝试回显时:

代码语言:javascript
复制
$b->ID 

我得到的不是预期的027447002,而是奇怪的6180354,但如果我像这样初始化对象:

代码语言:javascript
复制
$b=new bank(yaniv,'027447002',15000);

(注意,我引用了id属性)它工作正常。有什么建议吗?为什么会发生这种情况?修复它的正确方法是什么?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-08-14 20:33:41

027447002是octal格式,因为它以零为前缀。把它转换成十进制,你就会得到6180354!

有关详细信息,请参阅manual page on integers

票数 6
EN

Stack Overflow用户

发布于 2009-08-14 20:33:44

由于初始零,它被解释为八进制数。

http://www.php.net/manual/en/language.types.integer.php

如果数字在打印时应该用零填充(它们总是一个特定的长度),那么可以使用sprintf()将存储的整数转换为填充零的字符串。

票数 3
EN

Stack Overflow用户

发布于 2009-08-14 20:36:49

删除前导零,因为它使PHP将该数字视为八进制数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1280039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档