zoukankan      html  css  js  c++  java
  • 细说php(二) 变量和常量

    一. 变量的声明

    1. php中声明变量的方法:  $var = 123;

    2. php是弱类型的语言, 变量的类型由存储的值决定

        注: Java是强类型语言, 声明变量一定要先指定类型


    二. 变量的命名

    1.  变量前一定要使用"$", 声明和使用都要有这个符号.

    2. 不能以数字开头.

    3. 不能使用php中的运算符号+ - * / % &

    4. 能够使用系统keyword作为变量名

    5. php中仅仅有变量和常量区分大写和小写, 其它不区分


    二. 可变变量

    1.  一个变量的变量名能够动态设置和使用

    <?php
    	$one = "aaa";
    	$two = "one";
    	$three = "two";
    	echo $$$three;    // 结果为aaa
    ?

    >

    2. 变量能够进行引用赋值(和Java中的引用一样)

    <?php
    	$one = "aaa";
    	$two = &$one;   // 使用"&"符号加到将要赋值的变量前, $one和$two指向同一块地址
    	$two = "bbb";
    	echo $one;
    ?>

    三. 变量的类型

    1. 前面已经说过php是弱类型语言, 它的类型由存储的值决定

    2. php有8中类型:

    2.1) 四种标量:

           整形: int integer    布尔型: bool  boolean    浮点型: float  double  real    字符串: string

    2.2) 两种复合类型

           数组: array    对象: object

    2.3) 两中特殊类型

           资源类型: resource    空类型: null

    <?

    php $var=10; var_dump($var); // int(10) $var=34.5; var_dump($var); // float(34.5) $var="abc"; var_dump($var); // string(3) "abc" $var=true; var_dump($var); // bool(true) $var=array(1,2,3); var_dump($var); // array(3){[0]=>int(1) [1]=>int(2) [2]=>int(3)} $var=new mysqli("localhost", "root", "root", "newcms"); var_dump($var); // object(mysqli)#1(0){} $var=fopen("1.php", "r"); var_dump($var); // resource(3) of type (stream) $var=null; var_dump($var); // NULL ?>


    四. 各种类型变量声明

    <?

    php // 整数的最大值 4字节, 2的32次方, 214483647 $int=10; //十进制声明 $int=045; //以0开头的表示以8进制声明一个变量 $int=0xff; //以0x或0X开头的表示以16进制声明一个变量 0-9 a-f 0X A-F $int=-5; $float=10; $float=-10; $float=3.14E5; $float=3.15E+5; $float=5.14E-2; //E能够大写也能够小写 // 下面都是false的情况 $bool=false; // true $bool=0; // 非0的数 $bool=0.000; // 有非0的数出现 $bool=""; $bool=" "; $bool=null; // 非空代表 $bool="0"; // 非空非0的字符串 $bool=array(); // 有成员的数组 // 表示true的情况: true, 非0的数, 有非0的数出现, 非空代表, 非空非0的字符串, 有成员的数组 // 字符串的声明有多种方法 // 1.单引號和双引號都能够声明字符串, 声明的字符串没有长度限制 // 2.在双引號的字符串中, 即能够直接解析变量, 又能够直接使用转义字符 // 3.在单引號的字符串中, 不能够解析变量, 也不能够使用转义字符(能够以转义单引號本身, 也能够转义转义字符"") // 4.在双引號中不能再使用双引號, 在单引號中不能再使用单引號 $str='aaaaa'aaa'; $str="aaaa"aaaa"; $str=<<<one one; $str=`dir`; ?>


    五. 数据类型转换

    1. 强制类型转换

    <?

    php // 1. 使用setType(变量, 类型) $str="100.12345abc"; setType($str, bool); var_dump($str); // 2. 赋值前使用(类型)的形式, 不会改变原变量的类型 $a=(int)"123abc"; var_dump($a); // 3. 使用函数: $变量=intval(变量或值); $变量=floatval(变量或值); $变量=stringval(变量或值); $b=floatval(300); var_dump($b); ?>

    2. 类型自己主动转换

    变量会依据执行环境自己主动转换, 类似Java的自己主动提升

    <?php
    	$a = 10;
    	$b = "100abc";
    	$c = true;
    	$d = 12.34;
    	$sum = $a + $c + $b + $d;
    	var_dump($sum);  // float 123.34
    ?>


    六. 一些经常使用函数

    1.  isset() , unset() , empty()

        isset() : 推断值是否存在;   

        unset() : 去掉变量的值;

        empty() : 推断一个变量是否为空 ("", null)

    <?php
     	$a = $b = $c = $d = "hello, world";
     	unset($a);
     	if(isset($a)){
     		echo $a;
     	}else{
     		echo "not exists";
     	}
    ?>
    
    2. 变量类型測试函数
     is_bool();   is_int();  is_integer();  is_long()
     is_string();   is_float();  is_double();  is_real()
     is_array();  is_object();  is_resource()

     is_null();   is_scalar();  is_numberic();  is_callable()


    七. 常量的声明与使用

    1.常量是一个简单值的标识符, 定义后不能再改变它的值, 也不能使用unset()取消
    2.常量能够不用理会变量范围的规则而在不论什么地方都能够定义和訪问
    3.常量使用define("常量名", 值); 在声明和使用都不使用"$"

    <?

    php define("HOME", "aaaaaaaaaaaaaaaa"); // 使用define("常量名", 值) $a = 100; function demo() { global $a; echo $a; echo HOME; // 不用理会变量范围的规则而在不论什么地方都能够定义和訪问 } demo(); ?

    >

    4.常量名称习惯都使用大写, 它的值仅仅能用标量类型(int, float, bool, string)
    5.常量一定要在声明时就给值
    6.defined("常量");

    <?

    php define("HOME2", "aaaaaaaaaaa"); if(defined("HOME")){ // 推断是否有值,返回false echo HOME; }else{ define("HOME", "bbbbbbbbbbbb"); } echo HOME; // 输出 bbbbbbbbbbbb ?

    >

    7. 提前定义常量和魔术常量
    <?php
    	echo M_PI."<br>"; 
    	echo __FILE__."<br>";
    	echo __LINE__."<br>";
    	echo __FUNCTION__."<br>";
    	echo PHP_VERSION."<br>";
    	echo CASE_LOWER;
    	
    	/**
    	 *  3.1415926535898
    	 *	D:develop_environmentphpphp33_5.php
    	 *	4
    	 *	
    	 *	5.5.11
    	 *	0
    	 **/
    ?>


  • 相关阅读:
    C++输入与输出
    数组与指针
    MFC+WinPcap编写一个嗅探器之零(目录)
    netty源码分析之揭开reactor线程的面纱(二)
    netty源码分析之揭开reactor线程的面纱(一)
    Vert.x 线程模型揭秘
    理解 RxJava 的线程模型
    Java RESTful 框架的性能比较
    Java借助CountDownLatch完成异步回调
    在 Java 中运用动态挂载实现 Bug 的热修复
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7379735.html
Copyright © 2011-2022 走看看