(二)PHP变量的数据类型

[复制链接]
发表于 2025-11-8 13:14:02 | 显示全部楼层 |阅读模式
一,NULL类型


表示一个变量没有值。NULL类型唯一可能的值就是NULL


被认为是NULL的情况:

<?php
         
    var_dump( $a );    // 1.变量没有声明     返回 NULL

    $b;               
    var_dump( $b );    // 2.变量没有被赋值   返回 NULL
  
    $c = 10;
    unset( $c );
    var_dump( $c );    // 3.变量被销毁     返回 NULL

    $d = null;
    var_dump( $d );    // 4.变量被赋值为null  返回 NULL


   is_null(),用来判断变量是否为空,如果是返回true,否则返回false。
?>


二,与变量相关的函数


1,unset( 变量名 )
        销毁指定的变量
1.变量的实质是内存空间的一块存储区域.
2.PHP代码结束时,所有变量常量都会自动销毁
3.变量不再使用时, 手动提前销毁, 可以及时释放宝贵的内存空间


2,isset( 变量名 )

检测变量是否已设置并且非 NULL

    1) 变量未声明  或者 未赋值   

    2) 变量的值为 null  

上面两种情况返回 false  , 其他情况返回 true


3,empty( 变量名 )
        检查一个变量是否为空
        为空返回 true    不为空返回 false
为空的情况有以下几种 :
- ""  或者  ''        (空字符串)
- "0"  或者  '0'   (字符串 0)
- 0        (整数 )
- 0.0     (浮点数 )
- false    (布尔型)
- NULL  或者  null    (空)
- array()  或者  [ ]    (空数组)
- $var;     (声明未赋值的变量)



三,变量的类型转换


php属性于弱类型语言, 变量的类型取决于它存放的数据, 数据类型改变了,变量的类型也就变了.


1.自动类型转换


判断自动转换 布尔
<?php
      if ( 变量或表达式 ){
               小括号中为true时, 执行这里   
        小括号中的内容  会被自动转换为布尔型的 true 或 false
      }
?>

大多数情况下,会被转换为true,  转换为 false 的情况有:
        1)  布尔值 false
        2)  整数 0
        3)  浮点数 0.0
        4)  字符串 "" 和 "0"
        5)  变量没有赋值或未定义
        6)  空数组  array( )
        7)  NULL  (包括尚未设定的变量)



运算自动转换 数值
<?php
    $x = '20' + '30';    // 20 + 30 = 50
    $x = '123' + '2ab';  // 123 + 2 = 125
    $x = '2y' + '3c';    // 2 + 3  = 5
    $x = '' + 5;         // 0 + 5 = 5
    $x = true + false;   // 1 + 0 = 1
    $x = true + 1;       // 1 + 1 = 2
    $x = false + 5;      // 0 + 5 = 5
    $x = '3.14' + 2;     // 3.14 + 2 = 5.14
    $x = '12e2ab' + 77;  // 1200 + 77 = 1277  (注意)
?>


2.强制类型转换


1).第一种方式  
settype( 变量名, 类型字符串 )    设置变量的新类型

<?php   
    $num=12.8;  
    var_dump($num);         //输出float(12.8)

    settype($num,"int");   
    var_dump($num);         //输出int(12)   
?>


2).第二种方式
- (int)、(integer):转换成整型
- (float):转换成浮点型
- (string):转换成字符串类型
- (bool)、(boolean):转换成布尔类型
- (array):转换成数组
- (object):转换成对象

<?php   
    $float=3.14;
    var_dump($float);         //输出float(3.14)

    $num=(int)$float;   
    var_dump($num);         //输出int(3)   
?>


四,可变变量


可变变量就是一个变量以另外一个变量的值作为变量名     
变量名前再加$.  变量名还是一个变量

<?php
    $a = 'b';
    $b = 'xxoo';
    echo $$a;    // 相当于 echo $($a) =>  echo $b    所以输出 xxoo   这就是可变变量
?>

五,引用变量
<?php

        $a = 100;

        // & 称为取地址符
        $b = &$a;   // $b 和 $a 将代表同一个容器, 所以改变$b的值, $a也就改变了
               
   
            unset($a);  
            echo $b;    // 销毁互为引用关系变量中的一个变量, 另一个仍然有效
               
        // 销毁 $a 只是不让$a代表容器了,  容器本身还在, 还由$b代表   

?>

六,常量


定义赋值后, 存放的数据不能被修改、覆盖,也不能被销毁

格式:  define( '常量名', 值);
<?php
    //常量可以参加运算
    //常量名区分大小写, 习惯上用大写
    //常量名也可以使用下划线   USER_NAME
    define('NUM', 10);
    echo NUM + 10;   // 20

    //注意:
    echo  xxoo;  // 没有单引号,也没有双引号, 系统会尝试把它理解为一个常量
    echo  $arr[abc];  // 方括号中没有引号, 系统也会尝试理解为常量
?>

defined('常量名') 判断一个常量是否存在.


系统常量

PHP_VERSION          PHP的版本号

PHP_OS             PHP环境的运行操作系统

__LINE__           获得当前PHP文件中所在的行号

__FILE__                获取当前PHP文件的相对完整路径

__DIR__                  获取文件所在的目录

__FUNCTION__         当前函数名,只对函数内调用起作用

__CLASS__         当前类名,只对类起作用



七,PHP 运算符


1). 算术运算符

<?php
     $a = 6;
     $b = 4;
     echo $a + $b;           // 加  10
     echo $a - $b;           // 减   2
     echo $a * $b;           // 乘  24
     echo $a / $b;           // 除  1.5
     echo $a ** $b        // 求幂  1296
     echo $a % $b;           // 取模  取余数  2  
?>


2). 赋值运算符

$a = 5;               //把 5 赋值给 $a

$a += 5;             //相当于   $a = $a + 5;

$a -= 5;              //相当于   $a = $a - 5;

$a *= 5;             //相当于   $a = $a * 5;

$a /= 5;              //相当于   $a = $a / 5;

$a %= 5;            //相当于    $a = $a % 5;

$a **= 5               //相当于    $a = $a ** 5;


3). 递增/递减运算符

    //自增运算    $a++    ++$a
    $a = 5;
    $a++;       // 相当于 $a = $a + 1;
    echo $a;    // 6

    $a = 5;
    echo $a++;  // 5  
    相当于 1) echo $a;  2) $a=$a+1;  先取值, 再自加

    $a = 5;
    echo ++$a;  // 6  
    相当于 1) $a=$a+1;  2) echo $a;  先自加, 再取值

    //自减运算    $a--   --$a
    $a = 5;
    $a--;            // 相当于 $a = $a - 1;
    echo $a;      // 4

    $a = 5;
    echo $a--;    // 5  
    相当于  1) echo $a;   2) $a=$a-1;  先取值, 再自减
                    
    $a = 5;
    echo --$a;    // 4  
    相当于 1) $a=$a-1    2) echo $a;  先自减, 再取值


4). 字符串运算符

有两个字符串(string)运算符。
第一个是连接运算符("."),它返回其左右参数连接后的字符串。
第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。

$a = "Hello ";
$b = $a."World!"; // 现在 $b 包含 "Hello World!"

$a = "Hello ";
$a .= "World!";     // 相当于  $a = $a.'World';   $a 包含 "Hello World!"


5). 比较运算符


比较运算符, 最后的结果为布尔型

>     大于

<     小于

>=    大于等于

<=    小于等于


==   用来判断是否相等.   值相等就可以

===  用来判断是否全等,  要求类型相等, 值也要相等.  二者缺一不可


!=     不等于

!==    不全等于.  值不相等, 或者类型不相等


6). 逻辑运算符


逻辑运算符,最后的结果为布尔型

&&           逻辑与   符号两边同时为 true   结果就为true,  否则为 false
||           逻辑或   符号两边只要一边为 true 结果就为 true.   仅当两边同时为 false 时, 结果才为 false  
!             逻辑非   将值取反,  原来的 true 变成 false   ,原来的 false 变成 true  
xor          逻辑异或  符号两边不相同的时候为 true    两边相同的时候为false


逻辑或短路   当 || 左边的表达式为真时, 结果肯定为真, 所以 || 右边的表达式就不执行了

<?php
    $a = 3;
    $b = 5;
    $c = $a<6 || ($b=7);
      
    // $a<6 为真, 就代表着 等号右边一定为真, $b=7 就不会被执行     这称为 逻辑或短路
    $d = 0;
    if($a < 6 || ++$d){
        echo $d;
    }
?>  


逻辑与短路   当 && 左边的表达式为假时, 结果肯定为假, 所以 && 后边的表达式就不执行了   


<?php
    $a = 3;
    $b = 5;
    $c = $a>6 && ($b=7);
      
    // $a>6 为假, 就代表着 等号右边肯定为假, $b=7 就不会被执行     这称为 逻辑与短路
?>


7). 三元运算符
    格式:
    $a  =  表达式1   ?   表达式2  :   表达式3;

    1)  表达式1 为真时,   把 表达式2 的值赋值给 $a

    2)  表达式1 为假时,   把 表达式3 的值赋值给 $a   


<?php
    $test = '必火网络安全';
    // 普通写法
    $username = isset($test) ? $test : 'nobody';
    // 实例写法
    $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

    echo $username;
?>
  


8). 其它运算符


@    错误控制运算符     当把@放置在一个 PHP 表达式之前,该表达式可能产生的任何错误诊断都被抑制

``     执行运算符     反引号 ` 系统自带命令 `;    通过这种形式可以执行系统自带的命令


必火网络安全培训,北京实地培训,月月有开班,零基础入门,四个月打造渗透高手。
详情请加微信:nvhack/153-2000-4362,手机微信同号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|女黑客安全网 |网站地图 | 津ICP备17008032号-3

GMT+8, 2026-2-2 05:17 , Processed in 0.083090 second(s), 24 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表