PHP:变量的类型转换方式,变量值传递与值引用的区别,变量作用域和魔术常量

35 篇文章 1 订阅
16 篇文章 0 订阅

PHP:变量的类型转换方式,变量值传递与值引用的区别,变量作用域,魔术常量
一.变量/常量命名
①变量命名

  • 仅允许使用: 英文字母(a-z,A-Z),数字(0-9),下划线(\_)或他们的组合
  • 不允许使用数字开头
  • 必须使用"$"美元符为前缀
  • 严格区分大小写
  • 驼峰命名法

②常量命名

  • define(): 函数
  • const: 关键字作为前缀
  • 通常,常量都用大写字母表示

二.变量的类型转换方式

转换方式函数
临时转换(int),(string),(array),(object)…
自动转换根据操作符对操作数的类型要求进行
强制转换settype()

①临时转换

大家可以看到$str没有转换之前是string 字符串类型,下面我们用(int)临时转换为数值型

大家可以看到现在进行类型转换之后 s t r 变 成 了 i n t 数 值 型 , 和 str变成了int数值型,和 strint,int一模一样的类型值,但是这种类型转换不是永久的!而是临时的!

②自动转换:自动转换也就是让浏览器自己去解析转换

类型没有转换之前是字符串 15岁

用@符号抑制报错浏览器将会自动转换类型,类型转换之后15岁变成65,自动和数值类型相加,舍去了后面的字符串文字

③强制转换:settype()

$arr 没有转换类型之前是一个数组Array

强制类型转换为string,输出的类型就是字符串string

代码块

<?php
//定义全局变量
$str = '15';
$int = 30;

//使用(int) 临时把字符串转换为数值
echo (int)$str + $int .'<br>';

var_dump((int)$str,$int);

echo "<hr>";
//自动转换类型
$age = "15岁";
//@符 强制解除报错,会让浏览器自动解析
@$age += 50;
echo $age;
echo "<hr>";

//settype()强制类型转换,把一个数组类型转换为string类型
$arr = ['1','2','3'];
settype($arr,'string');

echo gettype($arr);

?>

三.变量值传递与值引用的区别
①变量值传递

变量a等于50 变量b等于变量a,输出变量b也等于50,这叫变量值传递,我们再看看更改变量a的值,变量b会不会改变属性

我们可以看到,变量a的值改变成100,变量b的值没有变化还是50,变量值传递等于每个人都有相同的值,重新更改赋值变量并不能改变被赋值本身的值,如果在下面在输出一个 变量b等于a呢?

我们可以看到,如果在下面在输出一个 变量b等于a,则变量b等于变量a最新的那个值,也就是说浏览器是从上到下开始解析的,这一点非常重要

②变量引用值传递

变量值引用,用一个&符号放在要引用的变量前面,接下来我们改变一下 c 的 值 , 看 看 c的值,看看 c,a会不会受影响

大家可以看到,我们在这里改变了 c 的 值 , c的值, c,a的值也会收到影响,说明变量值传递和变量值引用是不一样的!

③empty()和isset()

方法含义
isset()用来检测变量是否被定义,若变量存在并且值不为null才返回true 否则返回false
empty()检验变量是否为空,为空返回true 不为空 返回false
  • empty()

变量有值不为空,返回false

变量没有值返回true

  • isset()

变量值不存在返回false

变量值存在返回true

代码块

<?php

//值变量传递
//变量a等于50 变量b等于变量a
$a = 50 ;
$b = $a ;
$a = 100 ;
$b = $a ;
echo $b;
echo '<hr>';
//变量值引用 用&符号
$c = 50;
$a = &$c;
//改变一下$c的值
$c = 100;
echo $a ;
echo "<hr>";
// $c = null;
//empty 检验变量是否为空,为空返回true 不为空 返回false
var_dump(empty($c));
echo "<hr>";

//isset 用来检测变量是否被定义,若变量存在并且值不为null才返回true  否则返回false
var_dump(isset($c));

四.变量作用域和魔术常量

名称含义
全局变量全局变量,声明全局外部的变量,不在函数里面的变量,函数内部无法直接访问全局变量,必须加上global 才访问全局变量
局部变量局部变量,声明在函数里面的变量

①全局变量:声明全局外部的变量

全局变量,函数内部无法直接访问外面的全局变量,要加上global才能访问到

用global访问外面的全局变量,多个值用,号隔开

②局部变量:声明在函数里面的变量

局部变量声明在函数内部,外部无法访问到函数内部声明的变量

③魔术常量:魔术常量长得像这样__XXXX__,看见两端有下划线的就是魔术常量

系统预定义魔术常量含义
__FILE__默认常量,PHP程序文件名
__LINE__默认常量,PHP程序行数

__FILE__默认常量,PHP程序文件名也就是当前文件所在的目录

__LINE__默认常量,PHP程序行数

代码块

<?php
//变量作用域:全局变量声明全局外部的变量
//这是全局变量
// $a = 100;
// $b = 20;

// function Sum(){
//     global 访问外面的全局变量
//     global $a ,$b;
//     如果没有global 则不能直接访问外面的全局变量
//     return $a * $b ;
// }
// echo Sum();



//局部变量:声明在函数内部

function Sum(){
    $a = 50 ;
    $b = 30 ;
    return $a / $b ;
}

echo Sum();
echo  "<hr>";

//声明在函数内部的变量无法访问
echo $a ;
echo "<hr>";

//系统预定义魔术变量
// echo __FILE__; //当前文件所在的目录

var_dump( __LINE__);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值