zoukankan      html  css  js  c++  java
  • php入门第二篇---变量

    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;

     

  • 相关阅读:
    游LeetCode一月之闲谈
    新年计划与企盼
    F#周报2019年第51&52期
    F#周报2019年第50期
    F#周报2019年第49期
    F#周报2019年第48期
    F#周报2019年第47期
    F#周报2019年第46期
    F#周报2019年第45期
    关于我的随笔
  • 原文地址:https://www.cnblogs.com/xy95/p/5789467.html
Copyright © 2011-2022 走看看