一:php变量
#一、PHP的变量定义:变量用于存储值,比如数字、文本字符串或数组、五中:string /integer /double /array /object 
命名规则:
1、PHP的变量名是区分大小写的。
2、变量名必须以$开头
3、变量名开头可以是下划线
4、变量名不能以数字字符开头
<?php 
  $_4site = 'not yet';     // 合法变量名;以下划线开头 
  $a彩霞 = 'aaa';          // 合法变量名;可以用中文 ,但不提倡
var_dump($a彩霞);  //输出结果为aaa
  $long='×××'; 
  $$long="caixia";          // 合法变量; 用存放在变量$long里的字符串作为新变量的变量名,等同于变量$×××; */
$4site = 'not yet';      // xxx非法变量名;以数字开头
?>
#二、php变量的赋值
       引用赋值:用不同的名字访问同一个变量内容,当改变其中一个变量的值,另一个也跟着变化
   $str = 'caixiafeifei';
   $pro = & $str;
   $str = "hello,$str";
   var_dump($str);   //输出结果为 hello,caixiafeifei
   var_dump($pro);   //输出结果为 hello,caixiafeifei
       
   #变量默认值
虽然在 PHP 中并不需要初始化变量,但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值
- 布尔类型的变量默认值是 FALSE,
- ×××和浮点型变量默认值是零,
- 字符串型变量默认值是空字符串null或者数组变量的默认值是空数组。
*依赖未初始化变量的默认值在某些情况下会有问题,例如把一个文件包含到另一个之中时碰上相同的变量名。
 另外把php.in register_globals 打开是一个主要的安全隐患。使用未初始化的变量会发出E_NOTICE错误,
 但是在向一个未初始化的数组附加单元时不会。
 isset() 语言结构可以用来检测一个变量是否已被初始化。
Variable handling 函数array_key_exists

Table of Contents

  • isset — 检测变量是否设置
  • unset — 释放给定的变量
  • empty — 检查一个变量是否为空
  • var_dump — 打印变量的相关信息
  • var_export — 输出或返回一个变量的字符串表示
  • print_r — 打印关于变量的易于理解的信息。
  • serialize — 产生一个可存储的值的表示
  • settype — 设置变量的类型
  • strval — 获取变量的字符串值
  • unserialize — 从已存储的表示中创建 PHP 的值
  • is_null — 检测变量是否为 NULL
  • is_array — 检测变量是否是数组
  • is_bool — 检测变量是否是布尔型
  • is_callable — 检测参数是否为合法的可调用结构
  • is_double — is_float 的别名
  • is_float — 检测变量是否是浮点型
  • is_int — 检测变量是否是整数
  • is_integer — is_int 的别名
  • is_long — is_int 的别名
  • is_numeric — 检测变量是否为数字或数字字符串
  • is_object — 检测变量是否是一个对象
  • is_real — is_float 的别名
  • is_resource — 检测变量是否为资源类型
  • is_scalar — 检测变量是否是一个标量
  • is_string — 检测变量是否是字符串
  • array_key_exists(mixed key, array search) 检查给定的键名或索引是否存在于数组中
  • debug_zval_dump — Dumps a string representation of an internal zend value to output
  • doubleval — floatval 的别名
  • floatval — 获取变量的浮点值
  • get_defined_vars — 返回由所有已定义变量所组成的数组
  • get_resource_type — 返回资源(resource)类型
  • gettype — 获取变量的类型
  • import_request_variables — 将 GET/POST/Cookie 变量导入到全局作用域中
  • intval — 获取变量的整数值
*各种数据类型  函数输出比较
表P.1.用 PHP 函数对 $x 的比较

表达式 gettype() empty() is_null() isset() boolean :
if($x)

$x
= ""; string TRUE FALSE TRUE FALSE
$x
= NULL NULL TRUE TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x 尚未定义 NULL TRUE TRUE FALSE FALSE
$x
= array(); array TRUE FALSE TRUE FALSE
$x
= false; boolean TRUE FALSE TRUE FALSE
$x
= true; boolean FALSE FALSE TRUE TRUE
$x
= 1; integer FALSE FALSE TRUE TRUE
$x
= 42; integer FALSE FALSE TRUE TRUE
$x
= 0; integer TRUE FALSE TRUE FALSE
$x
= -1; integer FALSE FALSE TRUE TRUE
$x
= "1"; string FALSE FALSE TRUE TRUE
$x
= "0"; string TRUE FALSE TRUE FALSE
$x
= "-1"; string FALSE FALSE TRUE TRUE
$x
= "php"; string FALSE FALSE TRUE TRUE
$x
= "true"; string FALSE FALSE TRUE TRUE
$x
= "false"; string FALSE FALSE TRUE TRUE
#变量范围

变量范围

变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。
这个单独的范围跨度同样包含了 include 和 require 引入的文件。例如:

<?php
  $a
= 1;
  include
'b.inc';
?>
这里变量 $a 将会在包含文件 b.inc 中生效:

<?php
$a
= 1; /* global scope */

function Test()
{
echo $a;
/* reference to local scope variable */
}

Test();
?>
这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值。
 
#三、单引号与双引号
用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。当然,只有当你不需要在字符串中包含变量时才可以这么做。