变量赋值和销毁

变量赋值有两种:

1:传值赋值, 先看图:如下

变量名存放处,可以看成一个体,装备 值和类型  又是一个个体, 每个变量名对应着一个值和一个隐属性(类型)  你值改成什么,名不会有影响 。一样,你名改什么,也影响不了别人。  这种赋值,叫传值赋值。

来看代码:

$a=23;

$b=20;

$b=$a;

var_dump($a,$b);  //代码分析: 要打印出变量 $a,$b,  其值为?? ,先看$a,值是23, 然后看$b其值是个变量$a,那个计算下,$a值是23,然后23再赋值给$b .  最后,结果为 int 23 int23 . (这里还有一个小常识要知道,PHP中执行代码,是从上至下,一步一步来的,直至最后一行。所以,执行到最后,要打印变量$b是 看$b=$a这一行,而不是上一行 )

$b="xx";

var_dump($a,$b) //代码 分析:$a ,还是23   $b=‘xx‘ 这是一个赋值 过程 ,把字符串赋给$b ,那么$b的值是‘xx’  最后,结果为,int 23    string ‘xx‘  (lenght2)--这是字符串长度意思。

二.变量赋值之引用赋值

看下列代码所示,好好思考。

<?PHP

$li=29;

$wang=23;

$wang=&$li;

var_dump($li,$wang);//打印 int 29 int 29 代码解读: &$li 这个句解释为,把$il的存值地址直接赋给了$wang,这样 $li 和 $wang 就共一个存值地方。这样,打印出了就是 29 29

$wang=‘w‘;

var_dump($li,$wang);//打印 string ‘w‘(length=1)  string ‘w‘(length=1)   代码解读:因为一个存值地址对应了两个变量,改变一个变量的值,别一个值也得到了改变,所以打印出了 以上结果。

?>

三.销毁变量(unset)

意义:对于较大的数组,对象,可以及时释放内存

<?PHP

$a=100;

unset($a);

if(isset($a)){

echo ‘$a存在‘;

} else{

echo ‘$a不存在‘; //不存在

}

?>

<?PHP

$li=29;

$wang=23;

$wang=&$li;

unset($li);

var_dump($wang,$li); //打印出了,int 29 null 。想想看,为什么不全是null。明白了,就说明以上知识过关了。

?>

四.动态变量

动态变量,用变量的值做另一个变量的名

<?PHP

$lisi=‘man‘;

$one=‘lisi‘;

$pi=‘one‘;

echo $one,${$one},$$$pi;//动态变量,用变量的值做另一个变量的名。打印 lisi man man

?>

时间: 2024-10-03 14:03:14

变量赋值和销毁的相关文章

【足迹C++primer】42、拷贝、赋值与销毁(1)

拷贝.赋值与销毁(1) 13.1.1拷贝构造函数 /************************************** 13.1.1拷贝构造函数 **************************************/ class Foo1 { public: Foo1(); //默认构造函数 Foo1(const Foo1&); //拷贝构造函数 //... }; 注意:拷贝构造函数的第一个参数必须是一个参数 合成拷贝构造函数 /************************

变量赋值 php内核的实现(二)

<?php$a=1;$b=&$a;$c=2;$a=&$c;echo $a."\n";echo $b; 2 1 结论: 首先保存 左值的内存地址, 因这个内存地址会被再次被赋值 1)右值是引用 进入2.2 2.3 2.4步骤 例子: <?php $a=1; $c=2; $b=&$a; //执行到这里时,属于第2种情况 $c=&$a; //执行到这里时,属于第1种情况, 2)右值不是引用,右值的refcount_gc减1 2.1)如果refcou

拷贝控制——拷贝、赋值与销毁

当定义一个类时,我们显示地或隐式地指定在此类型的对象拷贝.移动.赋值和销毁时做什么.一个类通常定义五种特殊的成员函数来控制这些操作,包括:拷贝构造函数.拷贝赋值运算符.移动构造函数.移动赋值运算符和析构函数.拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么.拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时做什么.析构函数定义了当此类型对象销毁时做什么.我们称这些操作为拷贝控制操作. 如果一个类没有定义这些拷贝控制成员,编译器会自动为它定义缺失的操作.但是,对一些类来

Vim 中的变量赋值、引用与作用域

使用 let 进行变量赋值,echo 打印变量的值, unlet 销毁变量. 对于 Vim 选项还可用 set 来更方便地操作,比如 set {option}, set no{option}, set {option}?. 普通变量可以直接引用,环境变量要加前缀 $.寄存器变量要加前缀 @.Vim 选项要加前缀 &. 变量默认作用域取决于定义的位置,函数内则为函数作用域,外部则为全局变量. 赋值和引用变量时可以使用 b:,g:,l:,t: 等前缀来指定要操作哪个作用域的变量. 和其他编程语言一样

shell 的特性:命令行展开,变量赋值,以及文件层次标准(history)

bash默认会保存以前执行过的命令列表 当前shell的进程保存在缓冲区中 缓冲区中的命令会在shell退出后保存在文件中    .bash history 使用上下箭头可以翻看此前执行过的命令 history: !数字  :  执行history中第数字条命令 !!   :  上一条命令 !-数字:表示执行命令列表中的倒数第数字条命令 ESC .  : 执行上个命令的最后参数 ! string:执行命令列表中最后一个以string开头的命令 - d :删除第数字条记录 -c:清空history

Oracle -&gt;&gt; 变量赋值 Demo

刚学Oracle,学习学习别人的代码.这段代码时从下面的博文中摘取的:http://www.cnblogs.com/mq0036/p/4155774.html declare l_dept integer := 20; currtime date := sysdate; l_nam varchar2(20) := to_char(add_months(trunc(sysdate),-12),'yyyymmdd'); -- to_char(sysdate,'MM')-13; type num_li

.net开发环境的认识,控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印 两种数据类型,整形类型转换

首先感谢向立凯老师带我走进.net这个很好的软件开发程序.通过两天的学习在这个领域的了解也多了很多,让大家先了解一下c#语言 c#是一种全新且简单.安全.快捷面向对象的程序设计语言.是专门为.net应用开发的语言..net的开发都基于一个统一的开发环境 Visual Studio.net.下面我们来看看怎么在Visual Studio.net.下创建以新的项目: 1.打开 2.新建一个项目 通过执行文件-新建-项目菜单命令,会弹出一个新建项目对话框.在这个对话框中选择开发语言为c#,选择框架版本

2017-2-17 c#基础学习 (控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印)

1 控制台程序的创建 > 新建项目  ,选择 c#,  框架选择4.0 , 选择控制应用台程序, 选择文件保存位置 修改名字. 2 c#输出与输入 >在main函数中编写代码 >在编写时可以先插入Console.ReadLine();防止程序闪退 > Console.Write("实例语句");//不换行输出 Console.WriteLine("示例语句");//换行输出 Console.ReadLine();//等待用户输入 防止闪退 结

JavaScript 变量赋值

在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我写了一个复制值的函数,可以进行深度复制,也能进行浅复制,要进行深度复制只需要将第二个参数设置为true即可 function clone(data,deep){ var cloneData = undefined; var data = arguments[0],deep = arguments[1]; if(!