目录
一、字符串
1、定义
使用单引号或双引号括起来的0个或多个字符串。
单引号
不能解析变量的值,能被转义的有 \\ \'
双引号
能解析变量的值,所有字符都能被转义
heredoc 其本质就是使用双引号定义大段的文本,只是以另一种方式进行书写
nowdoc 其本质就是使用单引号定义大段的文本,只是以另一种方式进行书写
<?php
/*
* 字符串
*/
$str = 'asdasd';
$heredoc = <<<abc
" Hello World "
abc;
echo $heredoc,'<br />';
$nowdoc = <<<'abc'
hello
abc;
echo $nowdoc,'<br />';
2、字符串长度
①、strlen()
语法:
strlen(变量)
说明:
用于获取一个字符串变量的字节数
<?php
/*
* 字符串
*/
$str = 'asdad';
echo strlen($str);
②、多字节字符的支持
mb_strlen(变量,存储字符编码) 获得一个字符串的字符个数
<?php
/*
* 字符串
*/
$str = 'asd撒旦ad';
echo strlen($str),'<br />';//11
echo mb_strlen($str,'utf-8');//7
3、字符串相关函数
①、查找&截取
strpos(str,substr [,int $offset
= 0 ]) 用于在字符串str中查找子字符串substr首次出现的位置
strrpos(str,substr [,int $offset
= 0]) 用于在字符串str中查找子字符串substr末次出现的位置
strstr(str,substr) 用于在字符串str中查找并截取子字符串substr首次出现的位置
strrchr(str,substr) 用于在字符串str中查找并截取子字符串substr末次出现的位置
<?php
/*
* 字符串
*/
$str = 'http://www.baidu.com/hello';
echo strpos($str,'/'),'<br />';
echo strrpos($str,'/'),'<br />';
echo strstr($str,'/'),'<br/>';
echo strrchr($str,'/'),'<br />';
②、分割
explode(分割符,str)
说明:
根据指定的分割符,将字符串str进行分割,并保存在数组中返回
<?php
/*
* 字符串
*/
$str = "星期一,星期二,星期三,星期四,星期五";
$array = explode(',',$str);
echo '<pre>';
print_r($array);
③、替换
str_replace(search,rep,str);
说明:
在字符串str中查找search表示的部分,并替换为rep代表的内容
<?php
/*
* 字符串
*/
$str = "星期一,星期二,星期三,星期四,星期五";
echo str_replace(',','/',$str);
④、大小写转换
strtolower(str) 将字符串全转换成小写
strtoupper(str) 将字符串全转换成大写
<?php
/*
* 字符串
*/
$str = "Hello ,World";
echo strtolower($str),'<br />';
echo strtoupper($str),'<br />';
⑤、去除指定字符
trim(str [,substr]) 除字符串首尾处的空白字符(或者其他字符)
<?php
/*
* 字符串
*/
$str = " Hello,World! ";
$str2 = "aaHello,World!aa";
echo trim($str),'<br />';
echo trim($str2,'aa'),'<br />';
⑥、pathinfo
语法:
pathinfo(path,[,option]);
说明:
用于获取一个文件的路径信息(文件名,文件夹,扩展名)
option 参数用于获取路径信息中指定的部分。
<?php
/*
* 字符串
*/
$str = "D:\wamp64\www\lgz\index.php";
echo '<pre>';
$info = pathinfo($str);
print_r($info);
echo '<br />';
echo pathinfo($str,PATHINFO_BASENAME),'<br/>';
echo pathinfo($str,PATHINFO_DIRNAME),'<br/>';
//...
⑦、md5()
语法:
md5(str)
说明:
用于对字符串str进行md5加密。对任何长度的字符串进行md5加密得到的都是32为长度的字符串;
<?php
/*
* 字符串
*/
$pwd = '123';
echo md5($pwd),'<br/>';
⑧、htmlspecialchars
语法:
htmlspecialchars(str);
说明:
将特殊字符转换为 HTML 实体
字符 | 替换后 |
---|---|
& (& 符号) | & |
" (双引号) | ",除非设置了 ENT_NOQUOTES |
' (单引号) | 设置了 ENT_QUOTES 后, ' (如果是 ENT_HTML401 ) ,或者 ' (如果是 ENT_XML1 、 ENT_XHTML 或 ENT_HTML5 )。 |
< (小于) | < |
> (大于) | > |
<?php
/*
* 字符串
*/
$img = "<img src='public/123.jpg'/>";
echo $img,'<br />';
$img = htmlspecialchars($img);
echo $img,'<br />';
二、数组
1、概念
数组是一种数据的集合
数组主要是于存储具有行列特征的数据
2、php数组的分类
①、索引数组
数组的下标是整数
②、关联数组
数组的下标是字符串
3、php数组的创建
①、索引数组的创建
<?php
/*
* 数组
*/
//显示创建
$array = [10,20,30,40];
$array2 = array(10,20,30,40);
//隐式创建
$array3 = array();
$array3[0] = 10;
$array3[4] = 30;
$array3[6] = 40;
$array3[9] = 60;
echo '<pre>';
print_r($array);
echo '<br/>';
print_r($array2);
echo '<br/>';
print_r($array3);
说明:在php中的下标可以不连续
②、关联数组的创建
语法:
$arr = array(键名=>键值,键名=>键值...);
$arr = [键名=>键值,键名=>键值...];
<?php
/*
* 数组
*/
//显示创建
$arr = array('name'=> 'lgz','pwd'=>'123456');
$arr2 = ['name'=>'Y','age'=>'21'];
//隐式创建
$arr3 = array();
$arr3['name']='L';
$arr3['id']='007';
$arr3['tel']='139xxxxxxxx';
echo '<pre>';
print_r($arr);
echo '<br/>';
print_r($arr2);
echo '<br/>';
print_r($arr3);
4、多维数组
一个数组中的元素又包函数组元素,则这个数组就称为多维数组
<?php
/*
* 数组
*/
//显示创建
$arr = array(
'goods'=>array('id'=>'1','price'=>'100'),
'goods2'=>array('id'=>'2','price'=>'100'),
'goods3'=>array('id'=>'3','price'=>'100'),
'goods4'=>array('id'=>'4','price'=>'100')
);
echo '<pre>';
print_r($arr);
5、数组元素的访问
①、一维数组元素的访问
语法:
$数组名[下标/键名];
②、二维数组元素的访问
语法:
$数组名[第一维度下标/键名][第二维度下标/键名];
<?php
/*
* 数组
*/
//显示创建
$arr = array(
'goods'=>array('id'=>'1','price'=>'100'),
'goods2'=>array('id'=>'2','price'=>'100'),
'goods3'=>array('id'=>'3','price'=>'100'),
'goods4'=>array('id'=>'4','price'=>'100')
);
echo '<pre>';
print_r($arr['goods']);
echo '<br/>';
echo $arr['goods3']['price'];
6、数组的长度
count()
用于获取数组的长度
<?php
/*
* 数组
*/
//显示创建
$arr = [10,20,30,40];
echo count($arr),'<br />';
三、数组的指针
数组指针用于表示当前所关注的元素
crrent($arr) 用于获取当前指针所指向的元素的键值
key($arr) 用于获取当前指针所指向的元素的键名
next($arr) 用于将数组的指针下移
prev($arr) 用于将数组的指针下移
reset($arr) 用于将数组的指针重置(归位,数组的指针默认位于第1个元素)
end($arr) 用于将数组的指针移动到最后一个元素
四、数组的遍历
1、for循环
只能遍历下标连续或有规律的索引数组。
<?php
/*
* 数组
*/
//显示创建
$arr = [10,20,30,40];
for($i=0;$i<count($arr);$i++){
echo $arr[$i],'<br />';
}
2、foreach
语法:foreach($arr as $key => $value); $arr是要遍历的数组名,$key和$value 的变量名可自定义,
所处位置对应数组中元素的键名和键值
<?php
/*
* 数组
*/
//显示创建
$arr = [10,20,30,40];
$arr2 = ['id'=>'07','name'=>'lgz'];
foreach ($arr2 as $key => $value){
echo $key,'->',$value,'<br/>';
}
原理:
首先对数组的指针进行重置
读取当前指针所指向的数组元素,并将元素的键名赋值给变量$key,将键值赋给变量$valeu;
同时将数组的指针下移一行
foreach由系统控制循环次数,自动判断循环结束。
3、while-each-list遍历 (了解)
使用while循环,及each(),list语法结构联合来遍历数组
①、each() //在php7.2.0被废除
说明:
用于获取当前指针所指向的元素键名与键值,并以索引元素与关系元素两种形式来表示,同时将指针下移一行
<?php
/*
* each
*/
$arr = ['one'=>10,'two'=>20,'three'=>30,'four'=>40,'five'=>50];
echo '<pre>';
$item = each($arr);
print_r($item);
$item = each($arr);
print_r($item);
$item = each($arr);
print_r($item);
$item = each($arr);
print_r($item);
$item = each($arr);
print_r($item);
$item = each($arr);//没有元素可以读取,返回false不输出
print_r($item);
var_dump($item);
②、list
语法:
list(变量列表)=$arr
说明:
将数组$arr中的索引元素赋值给变量列表中的变量
示例:
<?php
/*
* list
*/
$item = array(
'1'=>30,
'value'=>30,
'key'=>'id',
'0'=>'id',
);
list($k,$v)=$item;
echo $k,' ',$v,'<br/>';
③、while-each-list遍历
<?php
/*
* list
*/
$item = array(
'id'=>'007',
'name'=>'lgz',
'sex'=>'man',
'age'=>22,
);
while(list($k,$v) = each($item)){
echo $k,' ',$v,'<br/>';
if(!$k){
break;
}
}
五、数组操作常用函数
1、获取数组的长度
count($arr)
2、获取数组元素的键名和键值
①、array_keys(arr); 获取数组元素所有的键名
②、array_values(arr); 获取数组元素所有的键值
3、获取数组元素的键名和键值
①、array_key_exists(key,arr); 用于判断某个键名是否存在于数组中
②、in_array(value,arr); 用于判断某个键值是否存在于数组中
<?php
/*
* list
*/
$item = array(
'id'=>'007','name'=>'lgz','sex'=>'man','age'=>22
);
var_dump(array_key_exists('name',$item));
var_dump(in_array('lgz',$item));
4、数组合并
array_merge(arr1,arr2)
注:若两个数组是关联型数组,且拥有相同的键,则后者会更新前者
<?php
/*
* list
*/
$item = array(
'id'=>'007','name'=>'lgz','sex'=>'man','age'=>22
);
$a = array(
'name'=>'Tom','height'=>175,'weight'=>'90'
);
$return = array_merge($item,$a);
echo "<pre>";
print_r($return);
5、数组的排序
①、sort() 按键值对数组进行升序排序
②、rsort() 按键值对数组进行降序排序
③、asort() 按键值对数组进行升序排序,但索引关系不变
④、arsort() 按键值对数组进行降序排序,但索引关系不变
④、ksort()、kasort() 按键名进行排序
⑥、usort()、uksort(),uasort() 用户自定义排序 usort(arr,callable);
<?php
/*
* array
*/
$arr = [1,28,15,88,21,120,8];
sort($arr);//按键值进行数组升序排序
echo '<pre>';
print_r($arr);
echo '<br/>';
rsort($arr);//按键值进行数组降序排序
print_r($arr);
echo '<br/>';
asort($arr);//保持索引关系按键值进行数组升序排序
print_r($arr);
echo '<br/>';
arsort($arr);//保持索引关系按键值进行数组降序排序
print_r($arr);
6、extract
用于解压数组,将关联元素转换为以键名为变量名的变量(若转换不成功则不转换,例如键名不符合变量命名规则)
<?php
/*
* list
*/
$item = array(
'id'=>'007','name'=>'lgz','sex'=>'man','age'=>22
);
extract($item);
echo $id,'<br/>';
echo $name,'<br/>';
echo $sex,'<br/>';
echo $age,'<br/>';