为什么我用了绝等比较(===)改变了变量值

莱登堡 2009-03-11 11:56:30

/** @method 防止id越界
* @name strip_and_clean
* @Param integer id
* array array
* @return integer id or 0
*/
function strip_and_clean($id,$array) {
if(is_numeric($id)){
if($id < 0 || $id > count($array)){
$id = 0;
}
}
return intval($id);
}
class ___(){
function _view($id=null){
$id = 1;
$id = $this->strip_and_clean($id,array(1=>1,2=>2,3=>3,4=>4,5=>5));
echo 'before===='.$id;
if ($id === 0) {
echo '<br>after===='.$id;
$this->Session->setFlash(__('不合法的XX!', true));
//exit('不合法的XX!');
}else{
//doing something~~~~~~~~~~~~~~~
}
}
}

为什么我在运行这个程序的时候,会输出:
before====1
after====0
呢?????
-----------------绝等比较(===)不是只比较变量的值和类型是否相等吗?
怎么在这里却赋值了呢???????????????
...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yctin 2009-03-11
  • 打赏
  • 举报
回复
你这段代码能运行 =.=?
莱登堡 2009-03-11
  • 打赏
  • 举报
回复
怎么没人回答呢!!!
莱登堡 2009-03-11
  • 打赏
  • 举报
回复
不好意思 !
因为做项目大了,程序多了,这短代码在单独运行时是没有问题的!只是由于我的其他未列出的代码影响所致的结果!!!
不好意思 ,耽误了大家的时间!

不过对回复我贴子的两位我仍然要感谢撒!会散些分给你们的~~~~~~~~
jackydrl 2009-03-11
  • 打赏
  • 举报
回复
楼主没有搞清楚“变量的作用范围”这个概念,你看你在不同处出现的$id变量,你的本意可能是想它们是指向同一个变量,但实际上却不是,function,class中的都不是一样的值,你照这个道理去分析一下,就能理解这段代码的输出为什么是那样了!

解决方法,更改function中的变量名

21,887

社区成员

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

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