变量的声明

  • PHP变量声明必须是$(美元符号)+变量名进行命名,同时在=(赋值操作符)后进行赋值
  • 声明后的变量不是仅可以在一个<?php 这里是php代码 ?>使用,它还可以在当前页面所有开启使<?php 这里是php代码 ?>用,包括include和require引入的文件,当然在函数中是局部变量,另当别论
  • 在使用该变量之前,我们通常使用isset()empty()两个函数,isset()是检查变量是否设置,empty()则是检查变量是否为空,unset()则是释放变量,在这里推荐使用!empty()存在且不能为空
  • php变量的命名大小写区分,且不能是关键词

Demo

<?php
//声明变量a
$a="hello world";
?>
<?php
//判断变量a是否存在,如果存在,就打印,echo为打印函数
if(!empty($a)){
echo "变量存在";
echo $a;
} //销毁变量a
unset($a); if(empty($a)){
echo "变量不存在!";
}
?>

可变变量

可变变量的意思是一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,然后可变变量获取这个普通变量的值作为这个可变变量的变量名,可变变量声明是以$$开头。

Demo

<?php
//声明变量$a
$a="hello";
//声明可变变量$$a
$$a="world"; //将会全部打印"hello world"
echo "$a $hello";
echo "$a ${$a}"
?>

变量的引用赋值

PHP的引用就是在变量或者函数、对象等前面加上&符号。它其实相当于变量的一个别名,改变其中任意一个变量的值,另一个变量的值就会随之改变。但是它也不像C语言中的变量引用赋值那样,如果我用unset()函数销毁其中任意一个变量,另一个变量依旧存在。

Demo

<?php
//声明变量$a
$a="hello";
//声明变量$b
$b=&$a; $b="world";
//将会打印"word world"
echo "$a $b"; unset($a); //将会打印world
echo $b;
?>

变量的类型

PHP支持八种原始类型。具体的分为四种标量类型:string(字符串)、integer(整型)、float(浮点型,还有更高精度的double)和boolean(布尔型),两种复合类型: array(数组)和object(对象),两种特殊类型resource(资源)和NULL。数组和对象的声明可以参照Demo中的格式。这里的数组我们用array()来构建,它的参数是按照key=>value格式用逗号隔开的。

Demo

<?php
$bool=true;
$str="hello";
$int=123;
$float=1.2e3;//相当于1.2乘以10的三次方
$arr=array("key1"=>12,"key2"=>true); //声明对象类型
class Person{
var $name;
function say(){
echo "I am happy";
}
} $p=new Person();
$p->name="Tom";
$p->say(); //var_dump()直接输出变量类型
var_dump($bool);
var_dump($str);
var_dump($int);
var_dump($float);
var_dump($arr);
var_dump($p); //输出结果为
//I am happy
//bool(true) string(5) "hello" int(123) float(1200)
//array(2) { ["key1"]=> int(12) ["key2"]=> bool(true) }
//object(Person)#1 (1) { ["name"]=> string(3) "Tom" }
?>

资源类型

资源是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

Demo

<?php
//以写的方式打开本目录下的1.txt文件
$file=fopen("1.txt","w"); //连接本地数据库
$mysql=mysql_connect("localhost","root","root");
?>

NULL类型

在PHP中被认为为NULL类型的有三种情况

  1. 将变量直接赋值为NULL
  2. 声明的变量未被赋值
  3. unset()函数销毁的变量

伪类型

PHP伪类型有三种,分别是:mixed混合类型、number数字类型和callback回调类型。

  1. mixed说明一个参数可以接受多种不同的类型,但并不是所有的类型,例如str_replace()可以接受字符串和数组,gettype()可以接受任何类型。
  2. number参数可以接受integer整型和float浮点型。
  3. callback回调类型是诸如call_user_func()函数就可接收用户自定义的函数作为一个参数。callback函数不仅可以是一个函数,也可以是一个对象的方法,静态类的方法也可以。一个php函数用函数名字符串来传递,可以传递任何内置的或者用户自定义的函数,除了例如array(),echo(),empty(),eval(),exit(),isset(),list(),print(),unset()等这些内置函数。

自动类型转换

这种转换通常发生在不同类型混合运算时,它遵循以下原则

  • 如果是布尔类型,将true变成1,false变成0
  • 如果是null,将会变成数值0
  • 如果是float和int混合运算,转换成float类型
  • 如果是字符串,则提取字符串中的数字,例如"123.45abc"变成123.45,若没有数字,则是0

强制类型转换

PHP 中的类型强制转换和 C 中的非常像:在要转换的变量之前加上用括号括起来的目标类型。允许的强制转换有:

  • (int),(integer) - 转换成整型
  • (bool),(boolean) - 转换成布尔型
  • (float),(double),(real) - 转换成浮点型
  • (string) - 转换成字符串
  • (array) - 转换成数组
  • (object) - 转换成对象

同时,在使用中我们可以通过一些函数判断变量类型。判断变量类型常用的函数主要有下列几个:

gettype()返回变量类型、is_array()、is_bool()、is_float()、is_double()、is_integer()、is_null()、is_numeric()、is_object()、is_resource()、is_string()和is_callable()判断是否是有效函数。

PHP变量的更多相关文章

  1. 6 小时 Python 入门

    6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...

  2. In-Memory:在内存中创建临时表和表变量

    在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈.在SQL ...

  3. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  4. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  5. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  6. Js 变量声明提升和函数声明提升

    Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...

  7. PHP源码分析-变量

    1. 变量的三要素变量名称,变量类型,变量值 那么在PHP用户态下变量类型都有哪些,如下: // Zend/zend.h #define IS_NULL 0 #define IS_LONG 1 #de ...

  8. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  9. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  10. 引人瞩目的 CSS 变量(CSS Variable)

    这是一个令人激动的革新. CSS 变量,顾名思义,也就是由网页的作者或用户定义的实体,用来指定文档中的特定变量. 更准确的说法,应该称之为 CSS 自定义属性 ,不过下文为了好理解都称之为 CSS 变 ...

随机推荐

  1. C# 给word文档添加水印

    和PDF一样,在word中,水印也分为图片水印和文本水印,给文档添加图片水印可以使文档变得更为美观,更具有吸引力.文本水印则可以保护文档,提醒别人该文档是受版权保护的,不能随意抄袭.前面我分享了如何给 ...

  2. 【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引

    本文地址 分享提纲: 1.为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询 3. 当只要一行数据时使用 LIMIT 1 4. 为搜索字段建索引 5. 在Join表的时候使用相当类 ...

  3. BPM配置故事之案例1-配置简单流程

    某天,Boss找到了信息部工程师小明. Boss:咱们新上了H3 BPM,你研究研究把现在的采购申请流程加上去吧,这是采购申请单. 小明:好嘞 采购申请单 小明回去后拿着表单想了想,开始着手配置. 他 ...

  4. swift开发新项目总结

    新项目用swift3.0开发,现在基本一个月,来总结一下遇到的问题及解决方案   1,在确定新项目用swift后,第一个考虑的问题是用纯swift呢?还是用swift跟OC混编      考虑到新项目 ...

  5. 手动导入swift三方danielgindi/Charts到OC工程中教程

    1.到github网址上下载zip压缩包https://github.com/danielgindi/Charts 2.然后将解压后的文件夹整个拖到自己的工程文件夹下(很多教程只让拖xcodeproj ...

  6. requests源码阅读学习笔记

    0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...

  7. 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  8. 【腾讯Bugly干货分享】移动客户端中高效使用SQLite

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57b57f2a0703f7d31b9a3932 作者:赵丰 导语 iOS 程序能 ...

  9. EasyPR--开发详解(7)字符分割

    大家好,好久不见了. 一转眼距离上一篇博客已经是4个月前的事了.要问博主这段时间去干了什么,我只能说:我去“外面看了看”. 图1 我想去看看 在外面跟几家创业公司谈了谈,交流了一些大数据与机器视觉相关 ...

  10. ASP.NET MVC Model验证(二)

    ASP.NET MVC Model验证(二) 前言 上篇内容演示了一个简单的Model验证示例,然后在文中提及到Model验证在MVC框架中默认所处的位置在哪?本篇就是来解决这个问题的,并且会描述一下 ...