PHP基础知识(一)
一、PHP基本语法
1.php语法风格
4种php标记:
标记类型 | 开始标记 | 结束标记 |
---|---|---|
标准标记 | <?php | ?> |
短标记 | <? | ?> |
ASP标记 | <% | %> |
script标记 | < script language=“php”> | < /scirpt> |
2.php标识符和关键字
-
标识符:数字、字母、下划线,不能数字开始
-
关键字:
and $argc $argv as break case cfunction class continue declare default die do E_ALL echo E-ERROE else elseif empty enddeclare endfor endforeach endif endswitch E_PAESE eval E-WARNING exit extends FALSE for foreach function $HTTP_COOKIE_VARS $HTTP_ENV_VARS $HTTP_GET_VARS $HTTP_POST_FILES $HTTP_POST_VARS $HTTP_SERVER_VARS if include include_once global list new not NULL old_function or parent PHP_OS $PHP_SELF PHP_VERSION print require require_once return static stdClass switch $this TRUE var rivtual while xor _FILE_ LINE _sleep _wakeup $_COOKIE $_ENV $_FILES $_GET $_POST $SERVER
3.php常量
- 定义常量语句:define ( string name ,$value ,true/false)
- 第一二个参数代表名字和值,必填属性
- 第三个参数代表是否大小写敏感,true代表不敏感,false代表敏感
php预定义好了的常量:都是数组
常量名 | 常量的作用 |
---|---|
$_GET | 获取所有表单以get方式提交的数据 |
$_POST | POST提交的数据都会保存在此 |
$_REQUEST | GET和POST提交的都会保存 |
$GLOBALS | PHP中所有的全局变量 |
$_SERVER | 服务器信息 |
$_SESSION | session会话数据 |
$_COOKIE | cookie会话数据 |
$_ENV | 环境信息 |
$_FILES | 用户上传的文件信息 |
4.php变量
4.1.变量的定义与赋值
- 定义变量语句:$变量名
- php是弱类型,不需要指定变量数据类型,一般赋值变量和定义变量同时进行
- =是值的传递
- =&是引用传递,指向同一个内存地址,值会一起改变
4.2.数据类型
数据类型 | 表示 |
---|---|
整型 | int/integer |
浮点型 | float/double,表示小数或者整型存不下的整数 |
字符串型 | string(双引号) |
布尔类型 | bool/boolean,只有两个值:true和false |
对象类型 | object,存放对象(面向对象) |
数组类型 | array |
资源类型 | resource,存放资源数据(PHP外部数据,如数据库、文件) |
空类型 | NULL,只有一个值就是NULL(不能运算) |
4.3.检测变量的数据类型
- 语句:is_数据类型 ($变量名)
- 例:is_int($a)
- a是否是int类型,是返回1(true),否返回0(false)
4.4.可变变量
- 一个变量保存的值刚好是另外一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值
- 在变量前面再多加一个$符号
$a='b'
$b='c'
echo $$a
5.变量类型的转换
5.1.自动类型转换
- 字符串型转换成整形:字母开头等于零,数字开头,一直到非数字截止
- 其他类型转换为字符串型:以
.
和字符串为连接的时候
$b=77777
$c=$b."cleverlove".$b
var_dump($c)
5.2.强制类型转换
- 语句:(类型名)$变量名
5.3.设定类型转换
- 语句:Settype($变量名,类型)
- 强制类型转换不会处理实际存储的内容,settype会直接改变数据本身
6.php运算符
运算符 | 描述 |
---|---|
% | 取余(模)运算,两个数(整数)相除,保留余数,如果被除数(%前面那个)是复数结果也是复数 |
&& | 逻辑与,左边的条件与右边的条件同时成立(两边结果都为true) |
|| | 逻辑或,左边的条件或者右边的条件只要有一个满足即可 |
! | 逻辑非,对已有条件进行取反,本身为true,取反结果就是false |
xor | 逻辑异或 |
. | 拼接运算符 |
.= | 拼接运算符赋值,类似于py中字符串之间的+= |
++,-- | 递增递减 |
@ | 错误抑制符:在可能出错的表达式前面使用@符号即可 |
=== | 全等于,左边与右边相同:大小以及数据的类型都要相同 |
!== | 不全等于,只有大小或者类型不同 |
表达式1 ? 表达式2 :表达式3 | 三目运算符,1正确执行2,1错误执行3 |
& | 按位与,两个位都为1,结果为1,否则为0 |
| | 按位或,两个有一个为1,结果为1 |
~ | 按位非,一个位如果为1则变成0,否则反之 |
^ | 按位异或,两个相同则为0,不同则为1 |
<< | 按位左移,整个位(32位),向左移动一位,右边补0 |
>> | 按位右移,整个位向右移动一位,左边补符号位对应内容(正数补0,负数补1) |
7.流程控制语句
if
else if
else
switch
switch else
while
do while
for
break
continue
都是C、JAVA语言类型的格式
二、函数
1.函数
- 函数的的定义:function 函数名(){}
- 不需要给定函数的返回类型
- 函数名不区分大小写
2.函数的高级应用
- $GLOBALS [ “变量名”] 获取函数外的全局变量
- 可变函数:可以使用一个变量名为一个函数的变量来使用这个函/数,类似于可变变量
3.函数的递归
就是C语言
4.字符串相关函数
函数名 | 描述 |
---|---|
explode(a,b,c) | 返回以a分割字符串b得到的数组,c是返回字符串的个数 |
implode(a,b) | 返回以a连接数组b里的元素组成的字符串,是explode的反函数 |
strcmp(a,b) | 比较字符串,相等返回0,a大于b返回1,a小于b返回-1 |
str_replace(a,b,c,d) | 返回用a替换字符串c里的b的新字符串,d是替换次数,可以用来外部调用 |
substr(a,b,c) | 返回从b位置开始截取的字符串a的子串。c代表截取字符个数 |
strlen(a) | 返回字符串a的长度 |
trim(a,b) | 返回删除字符串首尾两端的空白字符,或者指定字符b后的字符串 |
5.日期和时间管理
- mktime($hour, $minute, $second, $month, $day, $year)函数返回指定时间的时间戳,若无指定值,则使用当前时间
- time(void)函数返回系统当前时间
- date_default_timezone_set(“Asia/Shanghai”);设置时区为上海时区
- strtotime(String) 获取用户提交的时间(将时间先转换为字符串,然后再用strtotime处理)
- microtime()函数获取精确时间
- date()函数格式化输出时间
三、数组
1.数组
1.1.数组的定义
- 不需要事先声明,不需要指定数组的大小
- 直接赋值定义:索引数组赋值和关联数组赋值(键值对)
- array()函数定义数组:由于合法的整形值的字符串下标会被类型转换为整形下标,所以在创建数组的时候,若转换后数组存在相同的下标,后面的元素会覆盖前面的元素。
<?php
$arr = array(123,"hello",45.6,true);
var_dump($arr);
echo "<hr>";
$arr1 = array("id"=>1,"name"=>"Sunlight","address"=>"北
京","email"=>"han@tom.com");
var_dump($arr1);
?>
1.2.数组的使用
- $数组名 [键] 或 $数组名 {键}
<pre></pre>
标签用于格式化输出数组- 数组是动态的,可以随意添加元素,随意删除元素,元素的类型也可以是任意的
- unset($arr[1]) 删除arr数组中的第二个元素,或者直接删除整个数组
1.3.数组操作符
运算符 | 含义 | 示例 |
---|---|---|
+ | 联合 | $a + $b:合并数组a和数组b,若重复,则保留 $a 即前面的那个 |
== | 相等 | $a == $b:a和b有相同的键值对,则为true |
=== | 全等 | $a === $b:a和b有相同的键值对并且顺序和类型都相同,则为true |
!=、<> | 不等 | $a != $b: $a不等于 $b 则为true |
!== | 不全等 | $a !== $b: $a不全等于 $b 则为true |
2.数组的常见操作
2.1.数组指针
函数名 | 作用 |
---|---|
currrent($arr) | 返回数组中当前元素的值 |
key($arr) | 返回当前元素的下标(键名) |
next($arr) | 将数组的内部指针向前移动一位 |
prev() | 将数组的内部指针倒回一位 |
end() | 将数组的指针指向最后一个元素 |
reset() | 重置指针,将数组的指针指向第一个元素 |
2.2.数组遍历
- foreach($arr as $value){ 循环体 } 没有键的遍历
- foreach($arr as $key => $value){ 循环体 } 键值对遍历
- 遍历时,$key和 $value只不过是一个变量名,可以是i可以是任何其他标识符
- $key和 $value都是值传递,不是引用传递