PHP基础语法重点

变量值的讨论

  • 将一个变量的值 “传递” 给另一个变量的方式 。

值传递

就是将右边变量的 “ 数据值 ” 本身,复制一份,两个变量互不影响 。

$v1 = 1;
$v2 = $v1;    //这里,就是变量传值,只拷贝值。

引用传递

是将右边变量对数据的引用关系,传给左边的变量,改变一个值,会影响引用变量的值。

$v1 = 1;
$v2 = &$v1;    //这里,就是引用关系,相当于别名

预定义变量

  • 在PHP语言内部,有十多个变量,是系统定义的全局变量,这就是所谓预定义变量 。
  • PHP 预定义变量与 JAVA 内置对象很像,但是作用域和细节稍有不同,不能按照相同记忆 。

$_GET 变量

  1. $_GET 变量里面会“自动存储”(保存/装载)提交到某个文件中的“get”数据 。
  2. GET数据,是在一个页面以 “get” 方式请求时提交的数据 。

$_POST 变量

  1. $_POST变量里面会“自动存储”(保存/装载)提交到某个文件中的“post”数据。
  2. POST数据,是在一个表单中以“post”方式提交的数据。

$_REQUEST 变量

  1. 代表浏览器通过 “get” 方式 或 “post” 方式提交的数据的合集。
<form  action="xxx.php?p1=1&age=18"  method="post">
    <input  type="text" name="user_name" />
    
form>

$_SERVER变量

  1. 代表任何一次请求中,客户端或服务器端的一些 “基本信息” 或系统信息 。
  2. 常用变量如下:
变量名 表示内容
PHP_SELF 表示当前请求的网页地址(不含域名部分)
SERVER_NAME 表示当前请求的服务器名
SERVER_ADDR 表示当前请求的服务器 IP 地址
DOCUMENT_ROOT 表示当前请求的网站物理路径(Apache 设置站点)常用
REMOTE_ADDR 表示当前请求的客户端的 IP 地址 常用
SCRIPT_NAME 表示当前网页地址

可变变量

  • 变量名本身又是一个“变量”的变量 。
$v1 = 10;
echo $v1;      //输出10
$str = "v1";   //这是一个变量,名为str,值为"v1"(字符串)
echo $$str;    //输出10,也就是输出的是变量$v1

/*********************************************/

$v1 = 12;
$v2 = 51;
$v3 = 61;
$v4 = 88;
//......
$v100 = 102;
$sum = 0;
for ($i = 1; $i <= 100; $i++)
{
    $s = "v" . $i;
    $sum += $$s; //利用可变变量求和变得便捷
}

常量

  • 常量,就是一个用于存储 “不会变化也不允许变化” 的数据的标识符。
  • 圆周率 \ 自然常数 e,就是是一个固定的值(人为规定为某个值)。

定义常量

  1. define() 函数形式:define(‘常量名’, 对应的常量值),常量名推荐使用“全大写” 。
  2. const 关键字定义:const 常量名 = 对应的常量值 。
  3. 推荐使用第二种定义方式 。

常量取值形式

  1. 直接使用 。
  2. 使用constant() 函数以取值:
define('PI', 3.1415926536);
echo PI;                //注意:前面不带”$”,也不能有引号
echo constant('PI');    //注意:此时常量名要用引号引起来。

变量与常量的区别

  1. 变量的数据可以变化(重新赋值),常量不可以。
  2. 变量可以存储各种数据类型,而常量只能存储简单数据类型。
  3. 给变量赋值可以是 “计算” 结果,但给常量赋值,只能是“直接写出的值”(字面值)

判断一个常量是否存在

  1. 判断的结果返回:true(表示存在)或 false(表示不存在)。
if ( defined(PI) )      //如果该常量名存在,则......
{
    $C = 2 * PI * $r;   //do something......
}

预定义常量

常量名 表示内容
PHP_VERSION 表示当前 PHP 的版本信息
PHP_OS 表示当前 PHP 运行所在的系统信息
PHP_INT_MAX 表示当前版本的 PHP 中的最大的整数值
M_PI 表示圆周率 π(系统保留 10 多位小数)

魔术常量

常量名 表示内容
__DIR__ 代表当前 PHP 网页文件所在的目录
__FILE__ 代表当前 PHP 网页文件本身的完整路径
__LINE__ 代表当前这个常量所在的行号

数据类型

  • 标量类型:string、int、float、boolean
  • 复合类型:array、object
  • 特殊类型:null、resouce

整形

十进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
十六进制 0 1 2 3 4 5 6 7 8 9 A B C D E F 10
八进制 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20
二进制 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000
$n1 = 123;     //10进制形式
$n2 = 0123;    //8进制形式,以0开头
$n3 = 0x12A34; //16进制形式,以0x开头
$n4 = 0b1011011010;    //2进制形式,以0b开头

decbin();   //将10进制转为2进制
decoct();   //将10进制转为8进制
dechex();   //将10进制转为16进制
bindec();   //将2进制数字字符串转为10进制
octdec();   //将8进制数字字符串转为10进制
hexdec();   //将16进制数字字符串转为10进制

浮点型

  1. PHP 浮点数不要直接做相等比较,因为浮点数进行相等比较不可靠 。
  2. 浮点数两种书写形式,小数点、科学计数法 。
/** 2-1 直接小数点形式 **/
$f1 = 0.1;     //或者1.23、123.0

/** 2-2 科学计数法 **/
$f2 = 1.23e3;  //表示1.23 乘以10的3次方
$f3 = 123e2;   //这个也是浮点数,虽然其结果是一个整数

在考虑精度的基础上,将浮点数转换为整数,然后进行 “比较大小”,在精度范围内,如果相等,我们就认为是相等的。

/* 
 *  $v1 = 0.1 + 0.2;
 *  $v2 = 0.3;
 *  $v1 和 $v2 相等吗?
**/

if(round($v1 * 10000) == round($v2 * 10000))
{
    echo "相等";
}

布尔型

  1. 只有两个数据值: true、false(不区分大小写)
  2. 在进行判断或比较的时候,以下会被当作布尔值 false 的数据:false、0、0.0、”“、null、’0’、空数组 。

字符串型

  • 双引号字符串中,如果出现变量名,则该变量是可以被“识别”并转换为实际内容的 。

数组类型

  1. 将多个 “数据” 放在一起,排成一个序列,这个序列作为一个整体 。
  2. PHP 的数组,索引 / 键名 / 下标 可以不是数组 。
/**************** 形式1 ***************************/
$arr1 = array('张三丰', 18, '男');
$arr2 = array('name' => '张三丰', 'age' => 18, 'gender' => '男');
/**************** 形式2 ***************************/
$arr3 = ['张三丰', 18, '男'];
$arr4 = ['name' => '张三丰', 'age' => 18, 'gender' => '男'];
/**************** 数组的赋值 ***********************/
$arr3['张三丰'] = "NB";
/**************** 数组的取值 ***********************/
print_r($arr3['张三丰']);

空类型

  1. 只有一个值:null(不区分大小写)。
  2. isset(); 判断的结果是 false(即不存在)。

isset、unset、empty、is_null的区别

  1. isset 判断变量是否已存在(配置)
  2. unset 把变量删除(释放)掉
  3. empty 判断变量是否为空
  4. is_null 判断变量是否为NULL
变量 empty is_null isset
$a = “” true false true
$a = null true true false
$a = array() true false true
$a = false true false true
$a = 1 false false true
$a = 0 true false true
$a = “0” true false true
$a = “true” false false true
$a = “false” false false true

isset(): 判断是否为 null 。为空(不存在),返回 false,否则返回 true 。
empty():判断是否为 “空的” 。是 “空的”,返回 true,否则返回 false。

类型判断和转换

类型判断

  • gettype( $v1 ); 获取一个变量的类型,结果为一个变量类型的名称(字符串)。
  • settype( $v1, ‘string’); 设置一个变量的类型 。
  • var_dump(); 输出变量的“完整信息”,包括变量类型,长度(如果需要),内容 。
  • is_integer(); 判断是否为整数类型
  • is_int();
  • is_float(); 判断是否为浮点类型
  • is_bool(); 判断是否为布尔类型
  • is_string();
  • is_array();
  • is_numeric(); 判断是否为 “数字” 类型(含整数,小数,以及 “纯数字字符串”)
  • is_object();

类型转换

"1.2abc" + "2abc"       //3.2
"abc2.2" + 1.2          //1.2
"10.8" % "3.6abc"       //1 转换为整数 10 % 3
"10.8ab" % "3.6cd"      //1 转换为整数 10 % 3
$v1 = (int)"1";			//强转,$v1是整数类型的1
$v2 = (float)"1.23";	//强转,$v2是浮点类型的1.23
$v3 = (string)$v1;        //强转,$v3是字符串"1"

你可能感兴趣的:(PHP)