首页 > 技术文章 > php入门第二篇---变量

xy95 2016-08-20 00:20 原文

php变量

1.变量的定义:a.变量必须以$符号开始,注意这里$符号并不属于变量的名称,即$+变量名称

       b.变量名称必须以字母或者下划线开始。

       c.变量中只能含有字母数字以及下划线

       d.变量名区分大小写。

2.变量的创建:a.注意在php中,变量类型是不需要声明的,即不存在c或c++中的int a; string str;之类的

        $x=5;//php会默认为整形

        $y=0.5;//默认为浮点型

        $str="hello";//默认为字符串型

       b.当然我们也可以对变量进行一些运算,对于同种类型的话,结果自然便是同种类型,但是如果不同类型?

       比如:<?php    $x=3.5;  $y=2;   $z=$x+$y;  echo $z; ?>那么会输出5.5,即整形与浮点型运算,会得到浮点型。

          <?php $x="5.5";  $y=2;  $z=$x+$y;  echo $z; ?> 你会惊奇地发现还是7.5

          <?php $x="abc";  $y=2;  $z=$x+$y;  echo $z; ?> 但这种情况的话,输出的结果为2,即这里会将$x变量默认为0

        c.变量类型的转换:常用的类型有整型:int 浮点型: double float real 字符串:string 布尔:bool boolean 数组:array 对象:object

         转换方法:(1)用括号括起类型:如<?php $x=2.5; $y=(int)$x;?>那么会输出2;

              (2)使用转换函数:intval(),float(),strval();如:$str="145.465abc"; $x=intval($str); $y=floatval($str); 那么分别会得到145和145.465;

              (3)使用settype()函数,如: $x=10.0;$y=settype($x,"int"); $z=settype($x,"bool"); 那么分别会得到10和true值。

 

3.全局变量:所有函数外中定义的变量,除了函数外,可以被任何脚本中的任何部分访问,但对于在函数内要访问全局变量,需要使用global关键字。我们先看个例子:

<?php
$x=10;
$y=5;
function test(){
$z=3;
global $x;
echo "<p>测试函数内变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
}

test();

echo "<p>测试函数外变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
?>

然后我们运行下,结果如下:

我们会发现存在乱码问题,并且存在两个notice,表示两个变量为定义。

 我们先来解决乱码问题,其实乱码的根本原因是我们输出了中文,而我们又没有去定义字符编码

php中文乱码问题解决办法一:

<meta charset="utf-8">//定义字符编码
<?php  上面的php文件内容  ?>

php中文乱码问题解决办法二:

<?php header("Content-Type:text/html;charset=utf8");//在php文件内部定义字符编码

?>

按照上述方法解决乱码问题后,我们可以得到以下结果:

我们会发现在test函数内的$y并没有输出,原因很简单,$y是个全局变量,而在函数内,没有用global定义,$z没有输出是因为$z是在函数内声明的,属于局部变量。

我们再看个例子:

<?php
header("Content-Type:text/html;charset=utf8");
$x=10;
$y=5;
function test(){
$z=3;
$x=5;
global $y;
echo "<p>测试函数内变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
}

test();

$x=1;
$z=5;
echo "<p>测试函数外变量</p>";
echo "变量x为: $x </br>";
echo "变量y为: $y </br>";
echo "变量z为:$z";
?>

结果如下:

 

我们在全局变量定义了$x,然后在函数内同样也声明了个$x,我们发现其实这样是兼容的,同理,$z也是如此。而且全局变量$x在脚本中也是可以重新被赋值的,但要注意一点的就是如果全局变量在函数内定义是不能赋值的,如:global $x=1;这样是会报错的。

 

4.global关键字:上面我们已经谈过,在函数内使用全局变量的话,要用global,实际上php把所有的全局变量都存储在一个名为$GLOBALS[index]的数组中,index为变量的名称,所以如果我们要在函数内访问全局变量的话,也可以用$GLOBALS数组,如下:

<?php
header("Content-Type:text/html;charset=utf8");
$x=10;
$y=5;
function test(){
$z=$GLOBALS['x']+$GLOBALS['y'];
echo "<p>测试函数内变量</p>";
echo "变量z为: $z </br>";
}
test();
?>

结果如下:

5.static作用域:当一个函数完成时,通常其函数内的变量都会被删除,而如果变量前加了static关键字的话,我们每次调用函数时,该变量会保存为前一次函数被调用时的值。

<?php
header("Content-Type:text/html;charset=utf8");
function test(){
static $x=0;
$x++;
echo "$x<br>";
}
test();
test();
test();
?>

结果为:1 2 3,原因很简单,因为$x被static声明后,保留的是上一次函数调用的值,而不会重新被赋值为0;

 

 

 

 

 

 

 

 

 

 

 

推荐阅读