[TOC]
PHP语言基础
1.PHP标记
PHP和其他几种Web语言一样,都是用一对标记将PHP代码部分包含起来,以便于和HTML代码区分开来,PHP一共支持4种标记风格:
PHP中以"<?php" 作为PHP的开始标记,"?>"是PHP的结束标记。在文件中仅有一个PHP标记的情况下,可以不加结束标记;若文件中有多个PHP标记时,每一对标记必须包含开始标记和结束标记;在拥有结束标记的前提情况下,最后一行代码的“;”可以不加,其余时候,每一句代码都必须以“;”结尾。
1.1 XML风格(推荐使用)
XML风格的标记,是常用的标记,也是推荐使用的标记,服务器是没有办法去禁用的,这种风格的标记在XML,XHTML当中都可以使用。
<?php
//XML格式标记
echo 'XML格式标记1';
?>
1.2 脚本风格
<script language="php">
// 脚本格式
echo '脚本格式';
</script>
系统默认开启,无法禁用。
1.3 简短格式
<?
echo '简短格式';
?>
1.4 ASP风格
<%
echo 'ASP风格';
%>
<table> <tr><td bgColor="orange"><strong>注: 如果要使用简短格式和asp风格,需要配置php.ini 文件。在配置文件中将short_open_tag和asp_tags 都设置为On,改动配置文件后重启Apache即可。</strong></td></tr></table>
2.PHP注释
注释是代码的解释和说明,代码执行时,注释部分会被解释器忽略不计。
PHP支持3种风格的程序注释:
2.1 C++风格的单行注释(//)
<?php
echo '代码输出';//这就是c++风格的单行注释
?>
2.2 C风格的多行注释(/………………/)
<?php
/**
* C语言风格的
* 多行注释
*/
echo '代码输出2';
?>
多行注释不能进行嵌套操作
2.3 Shell风格的注释(#)
<?php
#shell风格 的单行注释
echo '代码输出2';
?>
<table> <tr><td bgColor="orange"><strong>注释当中不能包含"?>"标记,解释器会认为脚本结束,从而执行脚本后面的代码。</strong></td></tr></table>
3.PHP的输出 (echo print print_r)
PHP是通过print和echo来做动态输出HTML内容,虽然print和echo语句两者的功能几乎是完全一样的,但是还是有一点差别。
3.1 echo
可以输出一个或多个字符串
3.2 print
只能输出简单类型变量的值,如 int,string
3.3 print_r
可以输出复杂类型变量的值,如数组,对象
<table> <tr><td bgColor="orange"><strong>echo输出的速度比print要快,echo是php语句,没有返回值,print和print_r是PHP的函数,函数是有返回值的。</strong></td></tr></table>
<?php
echo '简单类型的输出';
?>
4 PHP常量
4.1 声明和使用常量
常量可以理解为值不变的量。常量值在被定义以后在脚本的其他任何地方都不能更改。一个常量是由英文字母,下划线和数字组成,但数字不能作为首字母出现。
在PHP中使用define()函数来定义常量
1. define()
<?php
// define(constant_name,value,case_insensitive)
define('MATH_PI',3.1415926);
?>
参数 | 说明 |
---|---|
constant_name | 必选参数,常量名称,即标识符 |
value | 必选参数,常量值 |
case_sensitive | 可选参数,指定是否大小写敏感,true 不敏感 |
获取常量有两种方式,第一种直接使用常量名称,第二种使用constant()函数动态获取常量值。
2. const
<?php
const T=123456;
echo T;
?>
3. 预定义常量
PHP当中可以使用预定义常量来去获取PHP当中的一些信息,常用的一些PHP常量有这样一些:
常量名 | 功能 |
---|---|
FILE | 默认常量,PHP程序的文件名 |
LINE | 默认常量,php 程序的行数 |
PHP_VERSION | 内建常量,PHP程序版本。 |
PHP_OS | 内建常量,执行PHP解析器的操作系统名称 |
<a>https://www.php.net/manual/zh/pdo.constants.php</a>
5 PHP变量
变量在程序执行的过程当中可以变化的量,变量通过一个名字(也就是我们所说的变量名)来去标识。系统会给该程序中的每一个变量会分配一个存储单元,变量名实际上呢就是计算机的内存单元的命名;所以呢,借助变量名称,我们就可以访问到内存当中的数据。
5.1 变量的声明以及使用
和很多其他语言不通,在PHP中使用变量之前不需要声明变量(PHP4 之前需要声明变量),只需要给变量直接赋值即可。PHP中的变量名称用$和标识符表示,变量名是区分大小写的。
5.1.1 值赋值
变量赋值,是指给变量一个具体的数据值,对于字符串和数字类型的变量,可以通过“=”赋值。
<?php
$name="HuskyUncle";
// 注 变量名的命名规则,变量名只能以字母和下划线开头,不能以数字字符开头。
// $1name="";//X
// $@name="";//X
?>
5.1.2 引用赋值
使用不同的名字访问同一个变量内容,当改变其中一个变量的值的时候,另一个也会跟着发生变化。引用赋值使用“&”符号来去表示引用。
<?php
$i="abc";//声明变量$i 并赋值"abc"
$m=&$i;// 使用引用赋值, $m已经赋值为 “abc”;
$i="hello,world"; //重新给$m 赋值(把abc替换为“hello,world”);
?>
<table> <tr><td bgColor="orange"><strong>注意:引用赋值和值赋值的区别在于:赋值是将原变量内容复制下来,开辟一个新的内存空间来保存;而引用赋值则是给变量的内容再起一个名字。你可以这样理解:一些文学爱好者,经常会向报纸呀,杂志呀去投稿,但一般不会用真名,用的都是什么艺名或者笔名。</strong></td></tr></table>
5.1.3 变量的作用域
作用域 | |
---|---|
局部变量 | 是在函数体内部所定义的变量。我们叫局部变量。他的作用域只在函数内部。 |
全局变量 | 被定义的所有函数。以外的变量,它的作用域是整个拼音P.文件。但是用户自定义函数内部是不可用的。如果你希望在用户自定义的函数的内部使用全局变量的话,我们就要加上global关键字去声明全局变量。 |
静态变量 |
<?php
$var=123;
function test(){
echo $var;
}
?>
5.1.4 可变的变量
<?php
$username='huskyuncle';
$huskyuncle='123';
$c=$$username;
echo $c;
?>
5.1.5 PHP预定义变量
变量的名称 | 说明 |
---|---|
$_SERVER['SERVER_ADDR'] | 当前脚本运行的服务器的IP地址 |
$_SERVER['SERVER_NAME'] | 当前脚本运行的服务器的主机名 |
$_POST | |
$_GET |
6. PHP的数据类型
6.1 标量数据类型
标量数据类型是数据结构当中最基本的单元,他只能存储一个数据。
类型 | 描述 |
---|---|
boolean(布尔型) | 只有两个值,true(真) 和false(假) |
string(字符串型) | 连续的字符序列,计算机所能表示的一切字符的集合 |
integer(整型) | 只能包含整数,可以是正数,或负数 |
float(浮点型) | 用于存储数字和整型,它有小数位 |
1.布尔型(boolean)
<?php
$b=true;
$c=false;
>
<table> <tr><td bgColor="orange"><strong>
注:在PHP中不只有boolean值为假的,在一些特殊情况下,非boolean值也被认定为是假的。比如:0、0.0、"0"、空白字符串("")、只声明没有赋值的数组</strong></td></tr></table>
2.字符串型(string)
字符串是连续的字符序列,由数字,字母和符号组成,字符串中的每个字符占用一个字节。PHP中,有3中定义字符串的 方式,单引号('),双引号("")和界定符(<<<)。
- 单引号('),双引号("")
<?php
$str='string';
$str1="string1";
echo $str;
echo $str1;
$str2="hello,$str是第一个变量";//hello,string 是第一个变量
echo $str2;
$str3='hello,$str是第一个变量';//hello,$str 是第一个变量
echo $str3;
>
<table> <tr><td bgColor="orange"><strong>两者的不同之处在于,双引号中所包含的 变量会被自动替换成实际的数值,而单引号中包含的变量则按普通字符串输出。</strong></td></tr></table>
- 界定符(<<<)
从PHP4.0开始支持界定符,使用时,在界定符后紧跟一个标识符,然后是字符串,最后以同样的标识符结束字符串。
<?php
$string=<<<str
sdfsdflsdfjadsfjkjldfkjldafkjadkljkdjflka;kjlakljdfalsfja
<div>asdfasdsdfasdf
sadfasdf
asdfasdfasdfasdf阿士大夫撒打发斯蒂芬df</div>
str;
>
<table> <tr><td bgColor="orange"><strong>注意: 界定符 的结尾标识符必须单独另起一行,并且不允许有空格(必须顶行开始),前后均不许有其他字符。</strong></td></tr></table>
3.整型
整形类型只能包含证书,在32位的操作系统中,整型数可以用十进制,八进制和十六禁止表示。如果用八进制表示 数字前加0,如果用十六进制表示,数字前加0x;
<?php
$i1=12345678;//十进制
$i2=0x12345678;//十六进制
$i3=012345678;//八进制
$i4=0123456;//八进制
echo "十进制:$i1<br>";
echo "十六进制:$i2<br>";
echo "八进制:$i3<br>";
echo "八进制:$i4<br>";
4.浮点型(float)
浮点型既可以用来存储整数,又可以存储小数。它提供的精度啊,给整数要大。浮点型的标识符是double,我们把这个也叫做双精度。
<?php
$f1=3.1415;
$f2=3;
$f3=3.58e1;
echo $f1;
echo $f2;
echo $f3;
<table> <tr><td bgColor="orange"><strong>注意:浮点型的是只是一个近似值。所以要尽量避免浮点型数值之间的比较大小,因为得到的结果往往都不是特别准确。</strong></td></tr></table>
6.2 复合数据类型
类型 | 说明 |
---|---|
array(数组) | 一组类型相同的变量的集合 |
object(对象) | 对象是类的实例,使用new命令来创建 |
6.3 特殊数据类型
类型 | 说明 |
---|---|
resource(资源) | 资源是一种特殊变量,又叫做句柄。 |
null(空值) | 表示变量没有值,唯一的 值 就是null |
<?php
$str1=null;
$str2='str';
echo is_null($str1);
?>
6.4 转换数据类型
php也是弱类型的语言,但是有些时候我们仍然需要使用到类型的转换。PHP当中的类型转换和c语言当中的一样简单,在变量前面加上括号括起来的类型的名称就可以啦。
- 转换操作符
|转换操作符|转换类型|举例|
|-|-|-|
|(boolean)|转换为布尔型|(boolean)num|
|(integer)|转换为整型|(integer)num|
|(array)|转换为数组类型|(array)num|
<table> <tr><td bgColor="orange"><strong>
注意:在进行类型互赞类型转换的时候,转换成布尔型的时候,null,0和未赋值变量或者数组都会被转换成为false,其他的为true。转转换成整型时,布尔的false,会转换为0。true转换为1,浮点型的小数部分会被舍掉;字符型呢,如果以数字开头就截取到非数字位,否则就输出0。
</strong></td></tr></table>
- settype()函数做类型转换
bool settype(mixed var,string type);
<?php
$num="1.2";
echo (integer)$num;
settype($num,'integer');
?>
6.5 检测数据类型
PHP内置了检测数据类型的系列函数。可以对不同类型的数据进行这个检测,判断它是否是某一个类型,如果是返回true,否则返回false。
函数 | 检测类型 | 举例 |
---|---|---|
is_bool | 检查变量是否是布尔类型 | is_bool($var) |
is_string | 检查变量是否是字符串类型 | is_string($var) |
is_float/is_double | 检查变量是否是浮点类型 | is_float(var) |
is_integer/is_int | 检查变量是否是整型 | is_integer(var) |
is_null | 检查变量是否是null | is_null($var) |
is_array | 检查变量是否是数组类型 | is_array($var) |
is_object | 检查变量是否是对象类型 | is_object($var) |
is_numeric | 检查变量是否是数字,或由数字组成的字符串类型 | is_numeric($var) |
7 PHP运算符
7.1算术运算符
用来处理算术运算的符号。
运算符 | 说明 | 举例 |
---|---|---|
+ | - | - |
- | - | - |
* | - | - |
/ | - | - |
% | - | - |
++ | 递增运算 | a |
-- | 递减运算 | a |
7.2字符串运算符
字符串只有一个。也就是英文的"."。它的作用就是将两个字符串连接起来,结合成一个新的字符串。我们也称之为字符串拼接。
<?php
$a="huskyuncle";
$b=39;
echo $a.$b;
?>
7.3赋值运算符
赋值运算符是把基本赋值运算符"="右边的值赋给左边的变量或者常量。
运算符 | 说明 | 举例 |
---|---|---|
= | - | - |
+= | - | - |
*= | - | - |
/= | - | - |
-= | - | - |
.= | - | - |
%= | - | - |
7.4位运算符
位逻辑运算符是指对二进制位从低到高位对齐后进行运算
运算符 | 说明 | 举例 |
---|---|---|
& | 按位与 | - |
| | 按位或 | - |
^ | 按位异或 | - |
~ | 按位取反 | - |
<< | 向左移位 | - |
>> | 向右移位 | - |
<?php
$m=8;
$n=12;
$mn=$n&$m;//位与
echo $mn.'<br>';
$mn=$n|$m;//位或
echo $mn.'<br>';
$mn=$n^$m;//异或
echo $mn.'<br>';
$mn=~$m;//位取反
echo $mn.'<br>';
?>
7.5逻辑运算符
逻辑运算符用来组合逻辑运算的结果。
运算符 | 举例 |
---|---|
&&或and(逻辑与) | n |
||或or(逻辑或) | n |
xor(逻辑异或) | n(当n 一真一假) |
7.6比较运算符
比较运算符对变量或者表达式的结果进行大小或者真假的比较。如果比较结果为真的时候,返回true,否则就返回false。
运算符 | 说明 |
---|---|
< | - |
> | - |
<= | - |
>= | - |
== | - |
!= | - |
=== | 恒等 |
!== | 非恒等 |
7.7错误控制运算符
错误控制运算符可以对程序当中出现的错误表达式进行操作。从而对错误信息进行一些屏蔽。使用的方法呢,就是在错误的表达是前面加上@。And佛指对错误信息进行屏蔽啊,但是它没有解决错误。
<?php
$err=(5/0);
echo $err;
?>
7.8三元运算符
三元运算符(?:),也叫做三目运算符
<?php
$value=10;
echo $value>=10?'aaa':'bbb';
?>
7.9运算符的优先顺序
优先级别 | 运算符 | 优先级别 | 运算符 |
---|---|---|---|
1 | or,and,xor | 9 | ++、-- |
2 | 赋值运算符 | 10 | +、-(正负号运算)、!,~ |
3 | |、&& | 11 | ==、!=、<> |
4 | 、^ | 12 | <、<=、>、>= |
5 | &,. | 13 | ?: |
6 | +,- | 14 | -> |
7 | /、*、% | 15 | => |
8 | <<、>> |
8 PHP的表达式
表达式是构成php语言的最基本的元素,也是php最重要的一个组成元素。在php语言里边,几乎所写的任何对象都是表达式。是基本的这个表达式形式。也是这个常量和变量。比如说,$m=20.
是通过具体的代码来实现的。多个符合符号集合起来组成的代码,而这些符号只是一些对PHP解释程序有具体含义的最小单元。可以是变量名、函数名、运算符、字符串、数值和括号等等。
$a="world";
$a=$b=10;
// 一个表达式再加上一个分号就是一条PHP语句。
9 PHP函数
9.1 定义和调用函数
函数是将一些重复使用的功能写在一个独立的代码块儿里面,在需要的时候再单独调用。
function fn_name($str1,$str2,…………){
// $str1 形参
// echo $str1.$str2;
// 函数体
}
$a=123;
fn_name($a);//函数的调用 $a实参
9.2 在函数间传递参数
调用函数的时候,需要向函数的内部传递参数。被传入的参数称为叫实参,函数定义时参数为形参。函数间参数传递的方式。有按值传递和按引用传递,以及默认参数三种方式。
1.按值传递
<?php
function test($num){
return '您输入的 数值:'.$num;
}
$n1=234;
echo test($n1);
?>
2.按引用传递
// 引用赋值
function test1(&$num){
return $num*=2;
}
echo '<br>';
$n2=78;
echo '调用方法前'.$n2;//78
test1($n2);
echo '调用方法后'.$n2;//156
3.默认参数
// 默认参数(可选参数)
function test2($name,$pw='123456'){
return $name.'____'.$pw;
}
echo test2('huskyuncle',123);
9.3 可变参数列表
在PHP在当中传参的时候,如果只传一个参数,或者指定数量的参数。我们可以根据形参直接去获取到值。但如果数参数数量过多,我们还有另外一种方式,就是通过可变参数列表来去获取到传递的所有参数。这个呢有两种方式:
1.func_get_args()函数动态获取参数列表
通过func_get_args()函数动态获取参数列表,这个函数一般函数的内部,它返回传入的函数内部的参数的列表数组
function Sum(){
$args=func_get_args();
$total=0;
// for($i=0;$i<count($args);$i++){
// $total+=$args[$i];
// }
foreach($args as $v){
$total+=$v;
}
return $total;
}
10 流程控制语句
10.1 条件控制语句
条件控制语句主要有if、if...else、elseif 和switch 4种:
10.1.1 if语句
几乎所有的程序设计语言都有if语句,它是按照条件选择执行不同的代码片段。
if(expr)
statement;
如果表达式expr的值为真,就顺序执行statement语句,否则就会跳过该条语句,再往下执行,如果需要执行的语句不只是一条,我们需要 将statement放在“{}”,在“{}”中的语句被称为叫语句组。
if(expr){
statement;
}
<?php
$num=rand(10,100);
if($num%2==0){
echo '$num='.$num.'<br>';
echo "$num是偶数";
}
?>
10.1.2 if...else 语句
在满足我一个条件时执行一个语句,而且不满足这个条件的时候呢执行其他语句。我们就可以使用if...else。
if(expr){
statement;
}else{
statement;
}
<?php
$num=rand(10,100);
if($num%2==0){
echo '$num='.$num.'<br>';
echo "$num 是偶数";
}else{
echo '$num='.$num.'<br>';
echo "$num 是奇数";
}
?>
10.1.3 elseif 语句
if和else语句只是选择两种结果。要么执行真,要么执行假。但是有时候会出现这个两种以上的选择。这个时候呢,我们就使用else if (也可以写成elseif)语句。
<?php
$score=40;
if($score<60){
echo "不及格";
}elseif($score>=60&&$score<=70){
echo '及格';
}elseif($score>70&&$score<=80){
echo '良好';
}else{
echo '优秀';
}
?>
10.1.4 switch...case 多重判断语句
虽然else if语句那可以进行多重选择。但是我们在实现代码的过程当中会导致有一些冗余。就是代码语句过长。我们为了提高代码的可读性。也可以使用switch多重判断语句。
<?php
$score="男";//女 未知
switch($score){
case '男':
echo '这是个老爷们。';
break;
case '女':
echo '这是个小姑娘。';
break;
default :
echo '兄嘚,你是啥属性?';
}
?>
发撒发发适用于条件不确定的情况下,条件有一定范围的情况下,我们可以使用if语句。而switch语句呢,switch语句的判断呢,适用于固定值,就是等于某一个值的情况下(恒等),
10.2 循环
10.2.1 while循环语句
当表达式的值为真的时候,我们去执行对应的大括号当中的语句,执行结束之后,再返回到条件表达式当中,继续去进行判断执行,直到表达式的值为假才跳出循环执行后面的语句。while循环的使用呢,更适用于,我们不确定循环的次数的情况下使用。
<?php
$num=1;
$str="10以内的偶数有:";
while($num<=10){
if($num%2==0){
$str.=$num." ";
}
$num++;
}
echo $str;
?>
10.2.2 do...while循环语句
do.while语句要比while语句。多循环一次。当where的表达式的值为假的时候。While循环语句直接跳出当前循环。而猪儿循环语句呢,则是先执行一遍程序块,然后再对条件表达式进行判断。
<?php
$num=1;
// while($num!=1){
// echo '不会看到';
// }
do{
echo '会看到';
}while($num!=1);
?>
10.2.3 for循环语句
for(exp1,exp2,exp3){
statement;
}
$num=1;
for($i=1;$i<=100;$i++){
$num*=$i;
}
10.2.4 foreach循环语句
foreach 只适用于数组和对象的循环。
foreach(arr_expression as $value){
statement;
}
foreach(arr_expression as $key=>$value){
statement;
}
10.2.5 break/continue 语句跳出循环
break语句呢,可以终止当前循环,他使用它适用的范围适用于while、do...while、for、foreach 和switch。
continue 它的作用,没有break那么强大。continue,只能终止本次循环而进入到下一次循环当中。当然continue还有一个功能就是也可以指定跳出几重循环。
11.字符串的操作
11.1 去除字符串首尾空格和特殊字符
1.trim() 函数
去除字符串首尾空格和特殊字符,并返回去掉空格和特殊字符后的字符串。
\n换行符、\t tab,制表符、\0null,空值、" " 空格、\r 回车符
trim(string str[,string charlist]);
<?php
$str=' asd fasdfasdf ';
echo trim($str);
$str1="\r\rasdfasdfasdfasdf";
echo trim($str1,"\r");
?>
2.ltrim()函数
去除字符串左侧的空格或特殊字符
3.rtrim()函数
去除字符串右侧的空格或特殊字符
11.2 获取字符串的长度
用strlen()函数来获取字符串的长度
int strlen(string str);
<?php
$str="qwertyuiop";
echo strlen($str);
?>
汉字占两个字符,数字、英文、小数点、下划线和空格占一个字符
11.3 截取字符串
string substr(string $str,int $start[,int $length]);
/**
* str 指定字符串对象
* start 指定开始截取字符串的位置,如果start是负数,则从字符串的末尾开始截取
* length 可选参数指定截取字符串的个数,如果length为负数 ,取到倒数第length个字符
* return 返回截取的字符串
*/
11.4 查找字符串(检索字符串)
1.strstr()函数查找指定的字符串
获取一个指定的字符串在另一个字符串中首次出现的位置到另一个字符串末尾的字符串。返回获取的子字符串,失败,返回false
string strstr(string $sourceStr,string searchStr[,bool $before_needle]);
/**
* $sourceStr 指定搜索的对象
* $searchStr 指定从哪个字符串中进行搜索
* $before_needle 如果为true,从$searchStr 向 $sourceStr的开头截取;如果为false,从$searchStr 向 $sourceStr的结尾截取。
* */
$str="获取一个指定的字符串在另一个字符串中首次出现的位置到另一个字符串末尾的字符串。返回获取的子字符串,失败,返回false";
$searchStr='字符串';
echo strstr(str,searchStr);
2.strchr()函数
查找指定字符串在另一个字符串(原字符串)中的首次出现的位置,并从抽次出现的位置开始截取字符串至另一个字符串 末尾。
若第三个参数值为true,返回从指定字符串截取到原字符串之外的部分。
string strchr(string $sourceStr,string $searchStr[,bool $before_needle]);
/**
* $sourceStr 指定的原字符串
* $searchStr 指定从哪个字符串中进行搜索
* $before_needle 如果为true,从$searchStr 向 $sourceStr的开头截取;如果为false,从$searchStr 向 $sourceStr的结尾截取。
* */
该函数是 strstr() 函数的别名。
3.substr_count()
获取指定字符串在字符串中出现的次数
int substr_count(string $sourceStr,string $searchStr)
11.5 替换字符串
1.str_ireplace()
使用新的子字符串替换原始字符串中被指定的要替换的字符串。
mixed str_ireplace(mixed $search,mixed $replace,mixed $subject[,int $count]);
/**
* $search 指定需要查找的字符串
* $replace 指定替换的值
* $subject 查找的范围
* $count 可选参数 执行替换的次数(一共执行了多少次替换,该方法会将次数赋值给$count)
*/
<?php
$str1="范俊";
$str2="**";
$str="**性格开朗,为人细心,做事一丝不苟,能吃苦耐劳,工作脚踏实地,有较强的责任心,具有团队合作精神,又具有较强的独立工作能力,思维活跃。**热爱学习,工作态度严谨认真,责任心强,有很好的团队合作能力。有良好的分析、解决问题的思维。以创新、解决客户需求、维护公司利益为宗旨。来接受挑战和更大的发展平台。**诚实、稳重、勤奋、积极上进,拥有丰富的大中型企业管理经验,有较强的团队管理能力,良好的沟通协调组织能力,敏锐的洞察力,自信是我的魅力。我有着良好的形象和气质,健康的体魄和乐观的精神使我能全身心地投入到工作当中。";
// $i 可选参数 -->变量 输出替换的次数
echo str_ireplace($str2,$str1,$str,$i);
print_r( $i);
?>
2.substr_replace()
对指定字符串的 部分字符串进行替换
string substr_replace(string $str,string $newreplstr,int $start[,int $length])
/**
* $str 原始字符串
* $newreplstr 替换后的新字符串
* $start 替换字符串开始的位置,正数从头开始,负数从结尾开始
* $length 可选参数,替换的字符串的长度
*/
编码不同,占的bai字节不同。
ASCII码:一个英文字母(不分du大小写)占一zhi个字节的空间,一个中文汉字占两dao个字节的空间。
UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节
字节是指一小组相邻的二进制数码。通常是8位作为一个字节。它是构成信息的一个小单位,并作为一个整体来参加操作,比字小,是构成字的单位。
在微型计算机中,通常用多少字节来表示存储器的存储容量。
例如,在C++的数据类型表示中,通常char为1个字节,int为4个字节,double为8个字节。
理解编码的关键,是要把字符的概念和字节的概念理解准确。
$str="范军是好人,曾辉是华人。";
$replace="坏人";
echo substr_replace($str,$replace,3,2);
4.分割字符串
explode() 函数实现字符串的切割,按照指定的规则对字符串进行分割,返回值为数组
array explode(string $SplitIdentifier,string $str);
<?php
$str="**性格开朗,为人细心,做事一丝不苟,能吃苦耐劳,工作脚踏实地,有较强的责任心,具有团队合作精神,又具有较强的独立工作能力,思维活跃。**热爱学习,工作态度严谨认真,责任心强,有很好的团队合作能力。有良好的分析、解决问题的思维。以创新、解决客户需求、维护公司利益为宗旨。来接受挑战和更大的发展平台。**诚实、稳重、勤奋、积极上进,拥有丰富的大中型企业管理经验,有较强的团队管理能力,良好的沟通协调组织能力,敏锐的洞察力,自信是我的魅力。我有着良好的形象和气质,健康的体魄和乐观的精神使我能全身心地投入到工作当中。";
var_dump(explode(',',$str));
?>
5.合成字符串
implode()可以将数组的 内容组合成一个新字符串;
string implode(string str,array arr);
12.数组
12.1 声明数组
array array([mixed])//索引数组
array array(key=>val,key=>val,...)// 关联数组
$var=[];
12.2 数组的类型
1. 索引数组
索引数组的下标默认从0开始,然后依次增加。
$arr=['123','huskyuncle','test','html'];
$arr=array('123','huskyuncle','test','html');
$arr=array([1,3,4,5,6]);
print_r($arr);
echo '<hr>';
// 获取数组的 某一个元素
echo $arr[0];
// 新增元素
$arr[4]='abc';
$arr[3]='javascript';
print_r($arr);
// 数组的输出结果
// Array ( [0] => 123 [1] => huskyuncle [2] => test [3] => javascript [4] => abc )
2.关联数组
关联数组的键名可以是数字和字符串混合的形式。而不是像数字索引数组的建明只能为数字。
<?php
$arr=array('first'=>1,'second'=>'huskyunlce','6'=>'范俊','third'=>'曾辉','索引元');
print_r($arr);
?>
12.3 二维数组
$data=array("书籍"=>array("文学","历史","政治"),"体育用品"=>array('123','234','345'));
print_r($data);
12.4 遍历数组
使用foreach()结构遍历数组
$urldata=array("百度"=>"http://www.baidu.com","淘宝"=>"http://www.taobao.com","京东"=>"http://jd.com");
foreach($urldata as $val){
echo $val.'@@@@';
}
$arr=array('html','js','css');
// 只适用于数字索引数组
for($i=0;$i<count($arr);$i++){
echo $arr[$i];
}
12.5 数组的操作方法
12.5 获取数组的元素个数
1.count() 函数对组数中的元素个数进行统计。
int count(mixed array);
$arr=['123','234'];
echo count($arr);
2.array_push() 新增元素
$arr=[1,2,4];
array_push($arr,123);//索引数组
// 关联数组的新增元素
$arr['huskyuncle']="123456";
3. array_unshift() 数组的头部插入元素
$arr=[1,2,3];
array_unshift($arr,'huskyuncle');
print_r($arr);
4. array_shift()头部删除
$arr=[1,2,3];
array_shift($arr);
print_r($arr);
5. array_pop()尾部删除
$arr=[1,2,3];
array_shift($arr);
print_r($arr);
6. array_splice()
// 索引数组
array_splice(array $arr,int $start,int $delcount,mixed $insertEle);
$arr=array('aa','b','c','d');
array_splice($arr,2,0,'huskyuncle');
7.unset() 删除元素(关联数组)
$arr=array('un'=>'123','pw'=>'234');
unset($arr['un']);
8.关联数组的修改
$arr=array('un'=>'123','pw'=>'234');
$arr['un']='aaa';
9.截取子数组 array_slice()
array array_slice(array $arr,int $start,int $length);
10.数组去重 array_unique()
array_unique()函数将数组元素的值作为字符串排序,然后对每一个值只保留第一个键名。忽略所有后面的键名。也就是删除数组当中重复的元素。
array array_unique(array $arr);
11.查询 in_array()
bool in_array(mixed $search,array $arr);
// 区分大小写
12.查询key 是否存在(查询数组中是否包含某个key)
bool array_key_exists(mixed $searchkey,array $arr);
$arr=array('un'=>'123','pw'=>'234','email'=>'345');
echo array_key_exists('pw',$arr);
13.array_flip()函数交换key和value
通过array_flip()函数将数组的key和value进行交换,得到新的数组
$arr=array('un'=>'123','pw'=>'234','email'=>'345');
print_r( array_flip($arr));
14.合并数组
通过array_merge()函数对多个数组进行合并。
$arr=array('un'=>'123','pw'=>'234','email'=>'345');
$arr1=array('aaa','bbb','ccc');
array_merge($arr,$arr1);
print_r($arr);
15.获取数组的所有keys
$arr=array('un'=>'123','pw'=>'234','email'=>'345');
print_r(array_keys($arr));
13.web页面与PHP的交互
13.1 获取表单数据的两种方法
1.POST 方法提交表单
2.GET 方法提交表单
在<form>表单的method属性中设置"GET"或"POST"来提交表单数据。
13.2 PHP参数传递的常用方法
**1._POST[]可以获取post请求的数据
**2._GET[]可以获取get请求的数据
**3._REQUEST可以获取get和post请求的数据
14.PHP日期和时间函数
14.1 系统时区设置
date_default_timezone_set('Asia/Shanghai');
14.2 获取本地化时间戳
mktime()函数将一个时间转换成UNIX的时间戳。
int mktime(int hour,int minute,int second,int month,int day,int year);
// 2020 3 27 13:24:35
echo mktime(13,24,35,3,27,2020);
14.2 获取当前时间戳
time()函数获取当前的UNIX时间戳
int time();
14.3 获取日期信息
array getdate(int tempstamp);