一、PHP中的变量命名规则
1.以$美元符号开头,后面第一位跟着字母和下划线
2.后面跟上任意数量的字母,数字,或者下划线(不能有特殊字符,如&,*,#,...)。
3.区分大小写
命名规则:驼峰命名法,下划线命名法
<?php
// 驼峰命名
$userIdName = 'Tom'; // 首字母小写,后面其他单词首字母大写
// 下划线命名
$user_id_name = 'Tom'; // 字母都是小写,用下划线连接
// 由于数据库字段名忽略大小写,下划线命名法在数据库字段命名中得到了广泛应用
// 表名_字段名
user_name
?>
二、PHP中的变量默认值与初始化
<?php
// 当不确定变量类型时,返回NULL
var_dump($var); // NULL
print '<hr>';
// 与数值一起操作时,返回0
var_dump($var+10); // int(10)
print '<hr>';
// 与字符串一起操作时,返回空字符串
var_dump($var+'PHP'); // string(3)"PHP"
print '<hr>';
// 作为真假操作时,返回false
var_dump($var?'真':'假'); // string(3)"假"
print '<hr>';
// 作为数组操作时,返回长度0,空数组
var_dump(count($var)); // int(0)
print '<hr>';
// 初始化
// 一般我们会把对应类型的默认值作为初始化的值,这样便于我们排除变量初始值的错误
?>
三、PHP中的变量赋值
<?
// PHP变量赋值有两种类型:值传递和引用传递
// 1.值传递
$var='php';
$var1 = $var;
echo $var.'----'.$var1; // php----php
echo '<hr>';
$var1='Apache';
echo $var.'----'.$var1; // php----Apache
// 值传递相当于复制,变量之间互相独立
echo '<hr>';
// 2.引用传递
$var2 = &$var; //
echo $var.'----'.$var2; // php----php
echo '<hr>';
$var2 = 'Apache';
echo $var.'----'.$var2; // Apache----Apache
// 引用传递,相当于给当前变量起了一个别名,实际上引用的同个值。
?>
四、PHP中的可变变量
<?php
// 可变变量:变量的名称可以来自另一个变量的值
$name = 'title';
$$name = '这是一个标题';
echo '$name的值:'.$name; // $name的值:title
echo '<hr>';
echo '$title的值:'.$title; // $title的值:这是一个标题
echo '<hr>';
echo '$$name的值:'.$$name; // $$name的值:这是一个标题
// 注意:用作变量名称的变量值,必须是一个合法有效的标识符
// 字母下划线开头,后面是字母、下划线、数字
?>
五、PHP变量的作用域
变量类型 | 创建 | 作用域 | 备注 |
---|---|---|---|
局部变量 | 当前脚本的函数内部创建 | 仅函数内部 | |
全局变量 | 当前脚本的函数外部定义 | 当前脚本 | 函数内部使用全局变量必须先声明或者使用$GLOBALS |
超级全局变量 | 系统预定义,无需创建,跨脚本使用 | 跨脚本,任何地方都可以用 | |
静态变量 | 函数内部用static创建 | 可供每次调用时共享 |
<?php
// 1.全局变量
$hostname = 'www.zjyphp.com';
function getHost(){
// 2.局部变量
$hostname = 'zjy php study';
return $hostname;
}
echo $hostname; // www.zjyphp.com
echo '<hr>';
echo getHost(); // zjy php study
// 3.超级全局变量(预定义变量)之一,$GLOBALS 数组
echo '<pre>';
print_r($GLOBALS);
echo '</pre>';
/*
Array
(
[_GET] => Array
(
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
)
[_FILES] => Array
(
)
[GLOBALS] => Array
*RECURSION*
[hostname] => www.zjyphp.com
)
*/
echo '<hr>';
echo $GLOBALS['hostname']; // www.zjyphp.com
echo '<hr>';
// 可以利用$GLOBALS在函数内调用全局的变量
function getGloabalVar(){
return $GLOBALS['hostname'];
}
echo getGloabalVar(); // www.zjyphp.com
echo '<hr>';
function sum(){
// 4.静态变量,利用变量共享,实现累加
static $total = 1;
return ++$total;
}
echo sum(); // 2
echo '<hr>';
echo sum(); // 3
echo '<hr>';
echo sum(); // 4
echo '<hr>';
?>
六、PHP中常用的预定义变量(超级全局变量)
预定义变量 | 解释 |
---|---|
$GLOBALS | 这个变量是数组类型,保存着当前脚本中的所有全局变量,取值用$GLOBALS['全局变量名'],$a==>$GLOBALS['a'] |
$_SERVER | 服务器和执行环境信息 |
$_GET | HTTP GET 变量,获取URL地址中带有的变量 |
$_POST | HTTP POST 变量,用于接收表单等通过POST方式发送的数据 |
$_FILES | HTTP 文件上传变量 |
$_REQUEST | HTTP Request 变量 |
$_SESSION | Session 变量 |
$_ENV | 环境变量 |
$_COOKIE | HTTP Cookies |
$php_errormsg | 前一个错误信息 |
$HTTP_RAW_POST_DATA | 原生POST数据 |
$http_response_header | HTTP 响应头 |
$argc | 传递给脚本的参数数目 |
$argv | 传递给脚本的参数数组 |
<?php
// 2. $_SERVER 服务器和执行环境信息
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
/*
打印出一大串的数组元素,需要关注的有:
当前的域名 [HTTP_HOST] => www.zjyphp.com:8088
服务器的主机名 [SERVER_NAME] => www.zjyphp.com
服务器的端口 [SERVER_PORT] => 8088
项目所在的根目录 [DOCUMENT_ROOT] => C:/Users/zjy/Desktop/PHPStudy/firstdemo
当前脚本的绝对路径 [SCRIPT_FILENAME] => C:/Users/zjy/Desktop/PHPStudy/firstdemo/demo9.php
当前脚本名称 [SCRIPT_NAME] => /demo9.php
获取当前正在执行的脚本文件名 [PHP_SELF] => /demo9.php
*/
// 3. $_GET 获取URL地址中带有的变量
// 假如访问URl:http://www.zjyphp.com:8088/demo9.php?name=zjy&job=H5小@程序工程师
echo htmlspecialchars($_GET["name"]).'的工作是:'.htmlspecialchars($_GET["job"]);
echo '<hr>';
echo $_GET["name"].'的工作是:'.$_GET["job"];
// 结果输出: zjy的工作是:H5小@程序工程师
// 4. $_POST 用于接收表单等通过POST方式发送的数据
echo '<pre>';
print_r($_POST);
/*
当我们在页面的姓名,密码框中输入 zjy,123456,会打印出
Array
(
[username] => zjy
[passwd] => 123456
)
*/
echo '</pre>';
$register = <<<'FORM'
<form action="" method="post">
<label for="name">姓名:</label>
<input type="text" name="username" id="username">
<br>
<label for="passwd">密码:</label>
<input type="password" name="passwd" id="passwd">
<br>
<input type="submit" value="提交">
</form>
FORM;
echo $register;
?>