class成员变量默认值问题

huanshen0634 2006-11-06 04:10:02
class mySql
{
var $linkID;
function __construct($pconnect=false)
{
if($this->linkID==0) $this->Init($pconnect);
}
}

在这个类中的构造函数里面,这个判断应该成立还是不成立呢?
事实是成立的,也就是说$this->linkID等于0,在这之前没有任何的赋值行为。
那就是说这个变量是被系统赋予的默认值0,可是我在if语句之前加上echo $this->linkID;却又不输出这个变量的值0
如果有值,那么在echo的时候就应该有输出
如果没有值,那么if语句就应该不成立的
到底是怎么回事呢?
请高手指点
...全文
483 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
PleaseDoTellMeWhy 2006-11-06
  • 打赏
  • 举报
回复
客气了,兄弟!
huanshen0634 2006-11-06
  • 打赏
  • 举报
回复
因为是50分,不能给3个人平均分配,只能给唠叨老大多一些分了,其他两位兄弟请一定要谅解呀
huanshen0634 2006-11-06
  • 打赏
  • 举报
回复
嗯,受教了
结贴给分了
csdn真是个好地方
PleaseDoTellMeWhy 2006-11-06
  • 打赏
  • 举报
回复
变量只是声明了,没有初始化!(引用唠叨大哥的话 null)
此处应该用等同符号 === 来判断!
你写的那个能执行!
willko 2006-11-06
  • 打赏
  • 举报
回复
($this->linkID==0) => ($this->linkID === 0)

因为变量不存在所以是false, 而0在对比的时候也会转成flase
所以就是flalse == false 结果为true
用===去做比较,就不会转换变量类型
xuzuning 2006-11-06
  • 打赏
  • 举报
回复
任何变量(当然也包括类的属性)在没有显式赋值的时候,均为null。即“空”
所以你echo $this->linkID;却又不输出

当if($this->linkID == 0)时,php将自动转换数据类型进行比较(一般转换为数值型)。在数值类型中“0”也表示“空”

当if($this->linkID === 0) 时,判别式就不成立了,因为类型不同

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧