PHP的变量知识点

变量类型

整形 浮点型 字符串 布尔 数组 对象 NULL

变量检测

isset() 函数用于检测变量是否存在 并且非 NULL。对于null,isset也返回false
unset() 函数用于销毁给定的变量。

变量作用域

四种不同的变量作用域:local,global,static,parameter

  • 定义在函数外部的就是全局变量,它的作用域从定义处一直到文件结尾。
  • 函数内定义的变量就是局部变量,它的作用域为函数定义范围内。
  • 函数之间存在作用域互不影响。
  • 函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组

类型检测

gettype() 函数用于获取变量的类型。is_* 函数来测试某变量是否是某种类型

打印方式

echo,print,print_r,var_dump 的区别

1.echo
输出一个或者多个字符串。

2.print
和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。

3.print_r
打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。

4.var_dump
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

5.var_dump 和 print_r 的区别
var_dump 返回表达式的类型与值而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读。

变量类型转换

PHP 在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。

自动类型转换

  • 字符串到数字的转换,从左到右截取,直到碰到不合法的数字,截取出的部分转成数字
$a = "12.3hello99";
$a = $a + 3;
var_dump($a); // float 15.3
  • 数字到字符串的转换
$a = 123;
$a = $a."hello";
var_dump($a); // string '123hello'
  • 到布尔型的判断,以下值都被当作假
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)

传值赋值

赋值传值$B = $A;,是将A的值复制一份给B,A和B的地址指向不改变,自然修改A和B的值互不影响
在这里插入图片描述

<?php
$A = 55;
$B = 29;
$B = $A;    // 赋值传值
var_dump($A, $B);   // int 55 ; int 55
$B = "zzz";
var_dump($A, $B);   // int 55 ; string 'zzz'

引用赋值

引用传值$B = &$A,是将B的地址指向修改为A的地址,A和B指向同一个内存地址,修改A或B的值会相互影响
在这里插入图片描述

<?php
$A = 55;
$B = 29;
$B = &$A;    // 引用传值
var_dump($A, $B);   // int 55 ; int 55
$B = "zzz";
var_dump($A, $B);   // string 'zzz' ; string 'zzz'

变量销毁

unset() 函数用于销毁给定的变量。
在这里插入图片描述
不同变量指向同一个内存地址,销毁其同一个变量,内存地址并不会真正被销毁

<?php
$A = 55;
$B = &$A;    // 引用传值
var_dump($A, $B);   // int 55 ; int 55
$B = "zzz";
var_dump($A, $B);   // string 'zzz' ; string 'zzz'

unset($A);
var_dump($A, $B);   // null ; string 'zzz'

动态变量名

php很灵活,不止变量名 函数名 类名都可以是动态的。

<?php

// 动态变量名
$liubei = "河北";
$laoda = "liubei";
$paihang = "laoda";

echo $liubei, $$laoda, $$$paihang;  //河北河北河北

超级全局变量 各种变量的总结

全局变量:定义在函数外部 ,作用域从定义处一直到文件结尾(函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组)
局部变量:定义在函数内部,只能在函数内部使用
超级全局变量:页面的任何部位,都可以直接访问
常量:声明之后不能修改

/* 超级全局变量

$_GET       // 地址栏中获得的值
$_POST      // POST提交的值
$_REQUEST   // 既有get也有post的内容 get和post如果重复以post为准(在php.ini中 request_order = "GP" post覆盖了get)

$_SESSION
$_COOKIE
$_FILES

$_ENV       // 服务器操作系统的环境变量,如服务器的类型,linux mac 环境变量等($_ENV一般禁用 否则容易暴露服务器信息)
$_SERVER    // 获取网站域名,以及当前访问的脚本,用户的ip

$GLOBALS    // 是对全局变量花名册的一个别名,通过该变量,可以任意访问全局变量
*/

// $GLOBALS的用法
$a = 3;
$b = 4;

function fun(){
    print_r($GLOBALS);  // 把所有的超级全局变量 全局变量组成一个数组打印出来
    $GLOBALS["a"] = 30; // 类似global $a; $a=30;
    
}

fun();
echo $a;    // 30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值