php的变量作用域

来源:互联网 发布:数据挖掘有些什么算法 编辑:程序博客网 时间:2024/05/21 23:31

    前段时间在用php写一个留言本时就出现了一个问题,当时是解决了,可没有明白原因。今天在看一本php的书时,终于明白了其原因。其实就是变量的作用域的问题。下面我来说一说php变量的一些东东。

    <?php

   $a = 30;
   function setNumber()
  {
$a = 60;
  echo $a."<br />";
  }
  setNumber();
  echo $a;

    ?>

           就比如说上面的一段程序,第一个$a是全局变量,函数setNumber()里的$a就是一个局部变量。全局变量在整个php程序中都有效,局部变量只在函数体内有效。可我们在函数体内却用不了全局变量。

<?php
$a = 30;
function setNumber()
{
$b = 20;
$b += $a;
echo $b."<br />";
}
setNumber();
echo $a;
?>

比如说上面的程序会报错,$a未定义。如果要使用的话,可在上面的程序中加 global $a; 即可。我但是就犯了这样一个错误。

我在一个数据库的类中,比如说是sql.class.php中:

<?php

class SqlHelper

{

      ……

}

//最后

$db = new SqlHelper();

?>

然后我又在一个functions.php中:

<?php

include 'sql.class.php';

function Search()

{

//直接引用

……

$db->getFields($sql, $fields);

}

?>

肯定的,就出错了。我当时的解决办法就是把sql.class.php中的$db = new SqlHelper();去掉,将这句话写在functions.php,我定义的函数里,我当时没有明白这是什么原因。现在明白了,特意写出来和大家分享啦。

原创粉丝点击