php 变量使用及引申点
来源:互联网 发布:如何解决网络安全问题 编辑:程序博客网 时间:2024/04/30 13:32
1、变量的传值和引用
首先,要理解变量名存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存;
普通传值,传值以后,是不同的地址名称,指向不同的内存实体;
引用传值,传引用后,是不同的地址名称,但都指向同一个内存实体;改变其中一个,另外一个就也被改变;
按值传递:函数范围内对值的任何改变在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
按引用传递则不需要复制值,对于性能提高很有好处
<?php//普通传值$param1=1; $param2=2; $param2 = $param1; $param1 = 5; //变量1和变量2是两块内存,互不影响;echo $param2; //所以此处还是显示为1//引用传值 ↓↓$param1=1; $param2=2; $param2 = &$param1; //把变量1的内存地址赋给变量2;此时的变量2和变量1全等;echo $param2;// 1$param1 = 5; //变量1和变量2是一处内存,改变其中一个,另外一个也被改变;echo $param2; //显示为5
2、变量的类型转换和判断类型方法
判断类型的方法:
1.gettype 方法判断
2.is_array、is_string、is_int、is_double
类型转换
1.在要转换的变量之前加上用括号括起来的目标类型
2.使用3个具体类型的转换函数,intval()、floatval()、strval()
3.使用通用类型转换函数settype(mixed var,string type)
3、unset、isset、empty、is_null、defined 各自用途
3.1、empty
如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。
3.2、is_null
1、它被赋值为NULL
2、它还没有赋值
3、它未定义,相当于unset()
以上3种情况,isset为TRUE,其它情况都为FALSE
3.4、isset
如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)
3.5、unset
$a = 1; $b = & $a;
unset($a),$b是否还是1,为什么?
unset($b),$a是否还是1,为什么?
都等于1。
在php中,引用赋值不同于指针的感念,他只是将另一个变量名指向了某个内存地址。此题中:$b = &$a;只是将$b这个名字也指向了$a变量所指向的内存地址。
unset时只是释放了这个名字的指向,并没有释放内存中的值。另一方面讲unset($a),其实也并未真正立刻释放内存中的值,也只是释放了这个名字的指向而已,
该函数只有在变量值所占空间超过256字节长的时候才会释放内存,并且只有当指向该值的所有变量(比如有引用变量指向该值)都被销毁后,地址才会被释放。
3.6、defined
检测是否设置常量
3.7、下图是针对这几个方法的用途举例
4、echo(),print(),print_r()的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
print() 只能打印出简单类型变量的值(如int,string)
print_r() 可以打印出复杂类型变量的值(如数组,对象)
echo 输出一个或者多个字符串
阅读全文
0 0
- php 变量使用及引申点
- 输入法使用体验及引申
- static变量的作用及引申
- console的使用及引申的输入输出重定向问题
- PHP 变量及常量
- 关于PHP的boolean和string变量定义及使用
- 3、php中变量、常量的命名规则及使用
- PHP变量使用总结
- PHP变量的使用
- PHP:使用静态变量
- php闭包中使用变量
- PHP变量使用总结
- php 变量及变量作用域
- smarty及php系统变量
- PHP的常量及变量
- php变量及作用域
- PHP 函数使用注意点
- PHP-json使用注意点
- dos下如何支持多线程
- 类和对象基本知识及对象的析构和构造
- 浏览器的渲染:过程与原理
- codeforces-312B Archer
- 069 定积分的一般性质
- php 变量使用及引申点
- <Linux>查看Linux版本、内核版本命令
- nio异步io的将来式和回调式
- 2017.10.15 旅行comf 失败总结
- 2017.10.14晚,用迅雷下载大部分BT资源出现失败,tracker服务器被封了?FK
- 【第1079期】反击爬虫,前端工程师的脑洞可以有多大?
- 你们觉得 vscode 的新 logo 怎么样?
- android ubuntu /windows usb device list of devices attach
- 洛谷10月月赛R1·浴谷八连测R1·提高组 T1