变量
- 1.变量声明规则
- 1.必须以”$”为变量名前缀
- 2.变量名必须是一个合法的标识符: 英文字母 a-zA-Z ,数字 0-9 ,下划线 _
- 3.且禁止数字开头,中间不能有空格
- 4.预定义的: 保留字, 关键字,class, public 不能用
- 5.严格区分大小写,小写name和大写NAME,它们是2个不同的变量
// 合法 $name, $num1, $_id
// 非法 $user@name, $123abc, $my-email, $a b = 'php中文网';
2.变量命名规则
- 1.蛇形 下划线命名法 $app_name = ‘php基础’;
- 2.小驼峰命名法,第一个单词小写,后面的单词,首字母大写 $appName = ‘php基础’;
- 3.大驼峰命名法,所有的单词,首字母大写 $AppNameIs = ‘php基础’;
3.可变变量
$url = 'site';
$site = 'php中文网';
// $$url: 可变变量,变量标识符来自另外一个变量
echo $$url; // 返回 php中文网
4.预定义变量
// 超全局变量: 数组,任何地方都可以访问,不受作用域限制
// $GLOBALS: 引用全局作用域中可用的全部变量
// $_SERVER: 服务器和执行环境信息
// $_GET :通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组
// $_POST:当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本
// $_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组
// $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量的数组
// $_SESSION:当前脚本可用 SESSION 变量的数组
// $_REQUEST: 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组
// $_ENV: 通过环境方式传递给当前脚本的变量的数组
$email = 'admin@php.cn';
echo $GLOBALS['email']; // 返回 admin@php.cn
// 服务器和执行环境信息
var_dump($_SERVER);
echo 'IP: '. $_SERVER['REMOTE_ADDR']. '<br>';
echo '脚本绝对路径 = '. $_SERVER['SCRIPT_FILENAME']. '<br>';
echo '脚本相对路径 = '. $_SERVER['SCRIPT_NAME']. '<br>';
// id=1&name=admin 查询字符串,给GET请求用
echo '查询字符串 : '. $_SERVER['QUERY_STRING']. '<br>';
常量
- 1.英文字母(a-zA-Z)、数字(0-9)、下划线(_)
- 2.是固定的值,一旦创建不可更新,不可删除
- 3.常量推荐全部大写,多个单词之间用下划线连接
- 4.常量不是变量,前面不要加” $ “
// 1.函数
define('NATION', '中国');
// 2. 关键字
const GENDER = '男';
// 编译阶段就是静态分析,主要针对现在能看到的,或者能确定下值的东西
// const 运行在编译阶段 一定要有值 在全局中用
// define()在运行阶段才创建常量 是一个动态的概念 可以用在 if() function() 中
数据类型
- 1.基本类型
- 1.布尔类型 true, false
- 2.字符串 必须要使用”单引号”或”双引号”做为定界符
- 3.数值(整数,浮点数)
$boolean = true;
// gettype() 获取变量的类型
echo gettype($boolean); //返回 boolean
// 字符串
$username = 'admin';
$email = "admin@php.cn";
// 想要在字符串中输出 "单引号"或"双引号"
// 1. 将字符串内部的定界符进行转义,转为失去定界作用的普通字符
echo 'Hello \'欧阳老师\'';
// 2. 内部使用与定界符不同的引号类型
echo 'Hello "欧阳老师"';
2.复合类型
1.数组
- 索引数组
$stu = [1, '小明', 'php', 88];
- 关联数组
$stu = ['id' => 1, 'name' => '小明', 'course' => 'php', 'score' => 88];
- 索引数组
2.对象
class PHP{
}
$php = new PHP;
var_dump($php); // 返回
- 3.特殊类型
- null
$a = null; var_dump($a);
- null
类型转换
1.临时转换
$id = '1';
echo gettype($id),'<br>'; //返回 string
$id1 = (int)$id;
echo gettype($id1),'<br>'; // 返回 integer
echo gettype($id),'<br>'; // 返回 string
// (int)
// (string)
// (float) (array) (object)
2.自动转换
// 每一种操作符,它要求的操作数类型是固定的,如果不满足就自动转换
// "+"要求参与计算的数据都是数值类型,如果不是,就是会触发自动转换
echo 123 + '456' ,'<br>';
// 等价于
echo 123 + (int)'456' ,'<br>';
// ".", 希望二边都是字符串,如果不是就转换
echo 'php' . 123 . '<br>';
// 等价于
echo 'php' . (string)123 . '<br>';
// 布尔转换
// $email 未定义,NULL
var_dump($email); // 返回 null
var_dump((bool)''); // 返回 false
var_dump((bool)null); // 返回 false
var_dump((bool)0); // 返回 false
- 3.永久转换: 只针对变量
$price = 666;
echo gettype($price), '<br>'; // 返回 integer
// 永久转换
settype($price, 'string');
echo gettype($price), '<br>'; // 返回 string
值传递 与 引用赋值
// 默认是"值传递"
$price1 = 888;
$price2 = $price1;
$price1 = 666;
echo $price1 ,'<br>'; //返回 666
echo $price2; //返回 888
// 引用赋值其实就是给原始变量起一个别名,并未创建新变量
$price1 = 888;
$price2 = &$price1;
$price1 = 666;
echo $price1 ,'<br>'; //返回 666
echo $price2; //返回 666