php变量那些事:学习过程中遇到的关于php变量的有趣的问题(不断发现不断更新)
不断发现……,不断更新……,不断寻找答案……
例子的测试环境:php5.3,win7,64位
Num1:
<?
$a=array(1,2,3,4,5,6);
$b=$a;
$m=memory_get_usage();
unset($b[1],$b[2]);
$mm=memory_get_usage();
echo $mm-$m; #####392
?>
<?
$a=array(1,2,3,4,5,6);
$b=array(1,2,3,4,5,6);
$m=memory_get_usage();
unset($b[1],$b[2]);
$mm=memory_get_usage();
echo $mm-$m; #####-80
?>
上边那个,unset释放内存后,php使用内存量不但没有减少,而且还反而增加了。下边的是正常的。为什么?"变量的分离 copy on write" 。以后说……
Num2:
<?
$a=1;
$b=&$a;
unset($b);
echo $a; ######1
?>
unset到底做了啥啊,php中引用到底什么个情况。以后说……
Num3:
<?
$a = 1;
function test(){
unset($GLOBALS['a']);
}
test();
echo $a;########PHP Notice: Undefined variable: a
?>
<?
$a = 1;
function test(){
global $a;
unset($a);
}
test();
echo $a;#####1
?>
一个抱notice变量找不到,一个正常输出。$GLOBALS和global有啥区别(曾经看到过腾讯一个面试题)。以后说……(global $var相当于&$GLOBALS['var'],这个问题追加到Num2)
php变量那些事:学习过程中遇到的关于php变量的有趣的问题(不断发现不断更新)的更多相关文章
- Bash 中的 _ 是不是环境变量
首先,我们想到的会是 export(等价于 declare -x)命令: $ export | grep 'declare -x _=' 没有找到,那么结论就是 _ 不是环境变量?当然没那么简单,否则 ...
- 关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议)
关于JDBC学习过程中的注意事项(分享自己犯过的错误,写给初学JDBC的小伙伴的八条建议) 前言:最近在学习JDBC,总结了几个小问题,特地分享给大家,让大家不要犯这样的错误,也希望大家养成学会总结的 ...
- 用var声明变量,在java中居然有这么多细节,你都了解么?
简介 Java SE 10引入了局部变量的类型推断.早先,所有的局部变量声明都要在左侧声明明确类型. 使用类型推断,一些显式类型可以替换为具有初始化值的局部变量保留类型var,这种作为局部变量类型 的 ...
- 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...)
目录 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...) Java书写规范 IDEA的一些常用快捷键 Java类中作为成员变量的类 Java源文件中只能有一个public类 Java中 ...
- Python中的类变量和成员变量
类变量 定义 在类里面定义,且不位于构造或者成员函数里面,同时没有" self. " 的前缀:或者在类外定义,用 类名.类变量名 来新增加类变量. 使用 两种使用方法: (1)类名 ...
- linux centos中添加删除修改环境变量,设置java环境变量
前言 安装完软件必要添加环境变量.指令很少,然而长时间不写就会不自信:我写的对吗?于是百度开始,于是发现又是各有千秋.好吧,好记星不如烂笔头.当然,最重要的是,百度出来的都他妈的是如何添加环境变量,只 ...
- php中引用&的真正理解-变量引用、函数引用、对象引用
php的引用(就是在变量或者函数.对象等前面加上&符号) //最重要就是 删除引用的变量 ,只是引用的变量访问不了,但是内容并没有销毁 在PHP 中引用的意思是:不同的名字访问同一个变量内容. ...
- Java学习过程中的总结的小知识点(长期更新)
Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...
- js中let和var定义变量的区别
let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781671 声明后未赋值,表现相同 (fun ...
随机推荐
- arcgis 栅格计算器(Spatial Analyst/Raster Calculator)
栅格计算器中用得到$$相关函数 $$NROWS: the number of rows in the analysis window (行数)$$NCOLS: the number of column ...
- [SQL]sql语句中charindex的用法
假如你写过很多程序,你可能偶尔会碰到要确定字符或字符窜串否包含在一段文字中,在这篇文章中,我将讨论使用CHARINDEX和PATINDEX函数来搜索文字列和字符串.我将告诉你这两个函数是如何运转的,解 ...
- python正则表达式介绍
点击打开链接 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的 ...
- isPowerOfTwo
//Given an integer, write a function to determine if it is a power of two. public class isPowerOfTwo ...
- Arch时间校准
sudo ln -s /usr/share/zoneinfo/UTC /etc/localtime sudo hwclock --systohc --utc sudo timedatectl set- ...
- Grunt 之 RequireJS
RequireJs 提供了一个打包工具 r.js,可以将相关的模块打包为一个文件.相关说明:http://www.requirejs.org/docs/optimization.html 将相关的脚本 ...
- WebsitePanel 2.1.0beta配置部分
到http://www.websitepanel.net/downloads/下载好单独安装包作为网站内容运行在IIS7.0上,配置applicationpool为localsystem Websit ...
- 凸包(Convex Hull)构造算法——Graham扫描法
凸包(Convex Hull) 在图形学中,凸包是一个非常重要的概念.简明的说,在平面中给出N个点,找出一个由其中某些点作为顶点组成的凸多边形,恰好能围住所有的N个点. 这十分像是在一块木板上钉了N个 ...
- Windows环境Mycat数据库分库分表中间件部署
下载地址MYCAT官方网站 jdk安装配置 首先去oracle官网下载并安装jdk8,添加环境变量,JAVA_HOME设置为D:\Worksoftware\Java\jdk1.8 CLASSPATH设 ...
- asp.net(c#)中如何在前端用js写条件查询,且不用调用存储过程
前端页面(源): <dx:ASPxButton ID="ASPxButton_Select" runat="server" Text="查询&q ...