PHP入门笔记

php简介

什么是php

                 一种服务器端脚本编程语言

                 一种创建动态交互性的脚本服务器语言。

                 php是解释型语言,无需编译直接运行。

                 php全称为“php hypertext preprocessor”

php前身

                    使用perl开发的个人主页语言,后演化为超文本预处理器,底层为c语言。

什么是php文件

                     php文件包含html,css以及php代码。

                     php代码在服务器上执行,结果以纯文本返回给浏览器

                     文件后缀是.php

php的优点

  1. 跨平台性:Linux,win,mac都可以
  2. 兼容性:几乎所有服务器,多种数据库
  3. 易学性:易于学习且免费

点PHP技能的推荐前置技能加点

  1.  html(略通)
  2. css(略通)
  3. JavaScript(会点)       

        //要是一点也不懂得这三样那学起来可能有点吃力,看我的笔记倒是没什么了,但是在想前进的话还是建议先学上面三个,更简单一些还容易看到自己的进步,直接学php可能会郁闷,因为后端学习不像是前端一样学完就很快能看见自己的进步,有时候会怀疑自己学了个啥。

常见的php编辑器及其小工具

//因为php是服务端的语言,所以需要配置环境,配置环境耗时而且感觉学不到什么,配置环境即便是手把手跟着教程来也可能能出现各种小问题,计算机基础好的同学可能没感觉,自己琢磨一下就搞定了,但要是基础不好的会在这里就弃坑了,所以我更推荐另一种方法,适合一点基础都没有的小白白,在搜索引擎搜php在线,然后进去正常写就好了,本篇笔记的所有案例都可以在在线php之中运行出来,可以等到全学完了在慢慢回头补配置环境这里,所以米娜桑们可以跳过环境搭建这一小结。直接去学习php基本语法。当然你要是想挑战自己的软肋或者有相关基础可以简单那看一下,见笑了。

                1.vs code(很好用的写代码工具)

                2.notepad --(Notepad-- 是使用C++编写的轻量级文本编辑器, 简称ndd, 可以支持Window/Mac/Linux操作系统平台。){ notepad++自己爆了//这里不讨论,自行搜索}

                3.notepad next(NotepadNext 是一个开源的跨平台文本编辑器,基于 Qt 和 Notepad++ 的功能。)

                4.phpstorm(很好用的写代码工具)

                5.phpstudy(小皮面板//继承了很多环境){   用它的话可以直接配置好环境,但已开始学不建议用它,可以简单学完apache,mysql后在回来用,因为这毕竟是一种取巧的工具,小白白们一开始就用容易筑基不稳     }   

                6.各种在线编写php的网站(适合小白白,因为后端知识很杂很碎,小白白直接看各种配置简直是折磨)

PHP拓展知识(有过相关技能加点的直接过)

后端基础(域名,端口,dns,环境配置)

服务器概念:提供服务的机器(文件服务器,数据库服务器,应用程序服务器,web服务器)

Ip地址:网络之间的互联协议,理论上ip地址有唯一性

特殊ip地址:127.0.0.1,代表着本机

域名:由点分隔组成的名字,一台计算机或者一组计算机的名称。有时候也指某些地理位置。 特殊的域名:localhost,代表着本机域名

因为如果单纯记住ip过于复杂,域名的存在相当于简化了互联网之间的访问,只需要记住域名便可以访问对应的ip。

DNS:存储域名的在线服务器,只需要访问dns服务器就可以通过一串域名来找到对应的ip。

本地也有一个小的dns文件,一些常见的网址就存储到本机,不用每次都当问dns服务器。

端口:设备与外界通讯交流的出口,端口分为虚拟端口和物理端口

物理端口:那些可见的,如usb,网口等。

虚拟端口:不可见的,设备虚拟出来的,如80端口,21端口。

网站运行基本原理(静态网站,动态网站)

网站的运行基本原理:用户设备启用浏览器—》DNS进行解析—》返回给用户ip地址:端口—》目标服务器—》通过端口打开并使用目标服务器特定软件—》返回给用户浏览器—》浏览器进行解析并渲染。

静态网站:没有交互,早期互联网时代全是这种网站。

动态网站:可交互,可变化,现代互联网时代多数使用这类网站。(可能会有服务器解析,数据库等。)

环境搭建

Apache:安装在服务器端使其变成web服务器的软件。

注意点:

  1. 在安装界面时候80端口选项意思是所有人都可以访问
  2. 8080端口的意思是不允许外部访问
  3. 建议更改apache的安装位置,如果是学习的话建议单独配置安装时候的apache HTTPserver xxxx
  4. 如果是最新版本的apache,解压完后运行cmd(管理员权限)在bin文件下运行httpd -k install
  5. Conf文件夹,存放一些配置文件的地方
  6. Htdocs文件夹,存放默认主机地址的地方(网站根目录)
  7. Modules文件夹,存放apache模块的地方
  8. Bin-》ab.exe:压力测试的软件
  9. Bin-》httpd.exe:apache的进程,在任务管理器下找到这个说明服务器进程在进行。
  10. Bin-》apachemonixxxx.exe:apache的图标管理模块,相当于原神的启动器。
  11. 每次对apache修改都需要重启才会生效。

Httpd.exe详细解析:通过cmd启动httpd.exe,可查看是否正常,

-M(大写):检查相应加载的模块(static静态加载-启动就加载,shared动态加载-用的时候在加载)

Cmd在bin目录下:httpd -t可以验证是否正常(syntax OK)

Cmd使用技巧:cd 目录地址(进入到相应的路径)

(大写字母:切换盘符):如E:

11.在apache的安装目录下的conf—》httpd.conf——》找到对应关键字ServerRoot ,这里填写apache的根目录

配置默认站点:

通过前面的基础,已经能明白访问网站的具体方法,那么如何在本地开发?如果访问域名那无法定位到本机的文件路径,所以在正式开始之前还需要配置一下。

首先要让apache知道网站的主目录在哪里,也就是访问什么。

  1.  在apache的安装目录下的conf—》httpd.conf——》找到对应关键字”DocumentRoot”,在通常情况下apache默认是安装目录的htdocs文件夹下

注意,下面的《Dirxxxxxx》也要修改,不然会报错403。

  1.  方便使用,起一个域名,在apache的安装目录下的conf—》httpd.conf——》找到对应关键字“ServerName”

默认为#SeverName localhost:80,改为SeverName localhost,把前面的#注释和后面的:80删除掉。

新版默认为ServerName www.example.com:80

  1.  端口可以单独实现:在apache的安装目录下的conf—》httpd.conf——》找到对应关键字“listen”

  1.  对于dns的修改,通过修改本地dns来实现访问本地地址文件。本地的dns配置优先级高于网络dns,这样修改后可以直接访问本机的文件了。

Win系统下:C:window/system32/drivers/etc/(hosts)

修改hosts文件,新增一行127.0.0.1 localhost

Php的安装与配置

  1. 在官网下载好对应的PHP版本
  2. 根目录下ext是PHP的扩展
  3. Php.exe就是解释器
  4. Php.ini.xxxx是PHP的配置文件后缀为development是开发板,p'roduction是生产版。

检测PHP解释器是否正常

  1. 通过cmd进入php.exe目录
  2. 使用php.exe -f xx.php(目标php的路径)

Apache加载PHP

  1.  在PHP官网之中下载正确的版本会有apache的支持插件,一般是

“php(php的版本号)apache(apache的版本号)”

2.  在apache的conf文件夹修改httpd.conf文件,找到

“LoadModule”在下方增加一行代码

“ ’LoadModule  (名称自定义)php_module ‘php文件地址引用1’ ”

“php8这里的单引号换成双引号”

“不同版本的php在这里配置有不同,有的单引号,有的需要填写版本号等”

3.  检测apache是否加载成功,运用上面学过的httpd -M

4.  让apache知道php文件交给php工作

//php的配置文件目录,把php文件路径下的Php.ini.xxxx改成in,一个就可以。

PHPIniDir "E:/phpapachesql/php/"

//让apache知道php文件交给php工作

AddType application/x-httpd-php .php .phtml

加载MySQL

1.安装mysql

MySQL安装教程(详细版)_mysql安装教程8.0.36-CSDN博客

Windows安装Mysql自定义路径详细安装教程

  1. mysql目录介绍
    1. Bin(执行文件)
    2. Data(数据存储文件夹)
    3. Lib(核心文件夹)
    4. My.in(配置文件)8.0没有安装文件
    5. Bin\mysql.exe(访问mysql的客户端)
    6. Bin\mysqld.exe(mysql服务)
    7. Bin\mysqldump.exe(mysql备份客户端。)

PHP快速学习的配置知识

//这两个属于把复杂的操作直接集成了,也就是说不用辛苦配置改东西,很人性化的就能配置好,基本上看一眼就会了,但为什么不推荐呢?这就好比考试一直用计算器算题,哪天计算器坏了就傻了,还是建议先学一遍基础配置,再去用这两个。完全小白也可以用,起码不用自己来回配置。

小皮面板(php的集成环境)

Xampp(php的集成环境)

PHP基本语法

PHP 脚本可以放在文档中的任何位置。

PHP 脚本以 <?php 开始,以 ?> 结束:

例子:<?php// PHP 代码?>

Echo与print

Echo

echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。

<?php
echo "Hello World!";
?>

<?php

echo("您好")

?>

print

print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。

<?php

print "Hello world!<br>";

?>

<?php

print ("php启动")

?>

区别:

echo - 可以输出一个或多个字符串

//<?Php echo"您好","好的","飞起来!" ?>,

显示为:您好好的飞起来!

Print -不可以一行输出多个字符串

//<?Php print"您好","好的","飞起来!" ?>,

显示为:Parse error: syntax error, unexpected ',' in 本机地址on    错误行数

print - 只允许输出一个字符串,返回值总为 1

//<?Php echo print'x' ?>

显示为:x1

echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

补充用法:echo与print通过“”可以直接输出html的标签

<body>

<p>唱跳rap篮球</p>

    <?php echo ("<hr>"); ?>

<p>乐典孝急蚌赢</p>

    <?php print ("<hr>") ?>

</body>

补充用法:echo如果这样无法输出多个字符。

echo(“罕见”,”稀有”,”传说”);

echo 如果用括号的话需要这样写。

 echo ("举办"),("谢谢");

PhP的注释

//这是单行注释

# 这也是单行注释

-----------------------------

/*

这是多行注释

*/

-----------------------------

/**

*

*这也是多行注释

*多行注释

*/

PHP让浏览器按照指定字符集解析

//让浏览器知道按照什么格式去解析字符集,加上去之后不会出现乱码

header(“Content-type:text/html;charset=utf-8“);

PhP的变量

声明变量$ x

赋值x=10

声明并赋值$x=10

删除变量:

使用unset

例如:Unset $变量

Php中文变量

在php之中可以使用中文变量,但是不建议

$中国='zhong';

echo ($中国);

(结果为zhong)

PHP可变变量

如果一个变量保存的值刚好是另一个变量的名,那么将会直接访问另一个变量的值。

$a='b';

$b='飞起来';

echo $$a;

(输出为 飞起来)

php变量的命名规则

  1. 以$开头
  2. 必须以字母或者下划线开头
  3. 不能以数字开头,不能有空格
  4. 变量名只能包含字母,数字,下划线
  5. 区分大小写

注:php的关键字,自定义函数,都不区分大小写,除了变量。

Php预定义变量

就是php默认定义好了的变量,还有以后可能确定的变量,这些是不允许用户起名字和一样的。

变量传值

变量传递一共有两种方式

1.值传递:将变量保存的值复制一份。在将复制的值给新变量。

($a=1  $b=$a)

2.引用传递:将变量所在值的内存地址,传递给另一个变量,两个变量指向一个内存空间。(牢变量改变新变量也会随之改变)

($新变量=&$老变量)

拓展

在内存之中通常有几个分区

1.栈区:程序可以操作的内存部分

2.代码段:储存程序的内存部分

3.数据段:存储普通数据

4.堆区:存储复杂数据

php的常量

在程序运行过程之中不可以改变的变的数据。

有两种定义常量的方式。

  1. 使用定义常量的函数define(‘常量名’,’常量值’)
  2. 5.3版本只会才会有的:const 常量名=值;

常量通常使用大写字母和变量区分开来。

使用常量

  1. 跟变量相同的方法去使用 echo 常量名;
  2. 使用constant(‘常量名’)

系统常量

系统默认已经定义好的常量

常见的有“PHP_VERSION,PHP_INT_SIZE,PHP_INT_MAX”

魔术常量

在PHP之中还有一些特殊的常量,以双下划线开始+常量名+双下划线结束,通常会跟随环境变化,用户无法更改。//shift+两次快速的-

常见的魔术常量有

__DIR__:当前执行脚本所在的绝对路径

__FILE__:当前执行脚本所在的绝对路径,带自己文件的名字。

__LINE__:当前所属的行数。

Php数据类型

Php会自动确认数据类型

//php之中数据类型是指的存储本身的数据类型,而不是变量的类型。

Php有8种数据类型

三大类 简单数据类型(1-4) 复合数据类型(5-6) 特殊数据类型(7-8)

八小类 1.字符串 2.整数 3.浮点数4.布尔型5.数组6.对象7.null 8.资源类型

获取php的数据类型

1.var_dump()

如:

     <?php

     $cxk='2.5';

      var_dump($cxk);

     ?> //显示为string(3) "2.5"

var_dump()会显示出数据类型和占内存空间的长度,再给后面拼接上本身。

补充: var_dump(“$cxk”)可以直接显示变量,//显示为string(3) "2.5"

而 var_dump(‘$cxk’)则不会。//显示为”$cxk”

这里不仅仅是var_dump()会如此显示,其他输出语句也是如此,这里介   绍了单引号与双引号的区别。

var_dump()会显示数据类型与长度与值,一般用作调试。

2.echo gettype($a);

如:

 <?php

     $wa="ikun";

     echo gettype($wa);

     ?> //显示string

echo gettype()只会显示数据类型

整数型

1.整数至少有一个数字

2.整数不能包含逗号或者空格

3.整数不能有小数点

4.正负整数都可

5.可以用三种格式规定整数:十进制,十六进制(前缀是0x),八进制(前缀是0)

例:

 <?php

    print ("<hr>");

    $x1=100;

    echo ($x1);//100

    print ("<hr>");

    $x2=-100;

    echo ($x2);//-100

    print ("<hr>");

    $x3= 0x1bf52;

    echo ($x3);//114514

    print ("<hr>");

    $x4=01232;//666

    echo ($x4);

    ?>

当用echo输出的时候会变化为十进制

Php还提供了很多函数让其相互转换,例如。

Decbin()十进制转换二进制  //echo decbin(10)

Decoct()十进制转换八进制

浮点型    

浮点数是有小数点的数,可以用科学记数法和指数形式去写。

例:

  <?php

    $X1=2.5;

    echo ($X1); //输出结果为2.5

    print ("<hr>");

    $X2=2.5e3;  //=2.5 *10^3

    echo ($X2); //输出结果为2500

    print ("<hr>");

    $X3=2.5e-3; //=2.5 / -10^3

    echo ($X3); /输出结果为0.0025

    print ("<hr>");

    ?>

当整数型超过自身存储的大小之后会用浮点型存储

布尔型(逻辑型)

布尔型在程序中有两种状态。

1.真 true 1

2.假 false 0

布尔型常常用于判断。在判断一些数据时候记得数据转换。

Empty():判断是否为空,为空返回true,不是空返回false。

isset():判断存储的变量是否存在。存在返回true,不是返回false。

在实际开发与测试之中,用var_dump()比较多,因为直接用echo输出不了。

数组型

在一个变量中储存多个值,分为一维数组与多维数组,这里浅尝截止。

先了解一下创建数组有这么两种形式

1.$变量名=array(“数组值1”,”数组值2”,”数值值3”);

2.$变量名=[“数组值1”,”数组值2”,”数值值3”];

例:

 <?php

    $x2=["唱","跳","rap"];

    $x1=array("鸡","篮球","背带裤");

    var_dump($x1);

    print ("<hr>");

    var_dump($x2);

    

   //运行结果为

   //array(3) { [0]=> string(3) "鸡" [1]=> string(6) "篮球" [2]=> string(9) "背带裤" }

   //array(3) { [0]=> string(3) "唱" [1]=> string(3) "跳" [2]=> string(3) "rap" }

    ?>

对象

(后面用到类与封装的知识后在讲)

Null(空)

Null数据类型只有唯一的值——null

可以用null去清空变量的数据

  <?php

    $x1="真爱粉";

    $x2="小黑子";

    echo "$x2","与","$x1";     // 输出结果为   小黑子与真爱粉

    print "<hr>";

    $x1=null; //真爱粉被清除了

    echo "$x2","$x1";           //输出结果为  小黑子

    ?>

Resource资源类型

等学到数据库在展开来说,先记着有这么个类型

类型转换

在很多条件下,需要指定的数据类型。

Php之中有两种转换方式

  1. 自动转换
  2. 强制转换

(要转换的类型)变量

例子:echo  “(float)$a”;

其他类型转换数值型的说明

  1. 布尔类型true为1,false为0.
  2. 以字母开头的字符串,永远是0,如:ab123,转换后为0,不会是0123.
  3. 以数字开头的字符串,取到字符串为止。
  4. 转换为数值时候,不会有两个小数点,取到第二个小数点,后面的数据进行舍弃。

数据类型的判断

通过一组函数来判断变量,如果变量与函数内数据类型相同返回true,不同返回false。

Is _xxx(变量)

//例子: $x=3;

var_dump(is_int($x));

用来获取以及设定数据(变量)的类型

Gettype(变量名):获取类型,得到字符串数据

//例子:echo gettype($x);

Settype(变量名,类型):设定数据类型,与强制转换不同

//例子:$x=0.2;

var_dump ($x); //float(0.2)

settype($x,'String');

var_dump ($x) //string(3) "0.2"

  1. 强制转换(类型)是对于数据复制的内容进行处理,不会处理原来的数据
  2. Settype会直接改变数据本身。

Php定界符——eof(heredoc)

以《《《eof开始标记,以eof结束标记

结束标记必须顶头写,独占一行,不能有缩进和空格

在结束标记末尾要有分号

Eof可以用任何其他字符代替,开始与结束标记相同即可,比如常用的大写的ceo代替。

开始标记和结束标记之间的变量可以被正常解析,但函数不可以。

当内容需要内嵌引号(单引号与双引号)时,不需要加转义符。

例:

    <?php $x="启动";

    echo <<<ikun

“唱”跳:‘篮球’

<hr>

$x

ikun;

    ?>

Eof还可以嵌套

    <?php

$x="启动";

$y=<<<yy

$x

<hr>

元神$x

yy;

echo $y;

    ?>

Eof内部html会被解析

也就是说在内部写html标签会被浏览器渲染

    <?php

$x=<<<ikun

<a href="http://www.bilibili.com">天若有情天亦老</a>

<hr>

<h1>一级标题</h1>

ikun;

echo $x;

    ?>

php各种运算符

算数运算符

加法运算符

1+2=3

减法运算符

3-2=1

乘法运算符

2*3=5

除法运算符

6/2=3

取余运算符

5%2=1

并置运算符

1.1=11

在除法和取余运算时候被除数不能为0,否则报错

赋值运算符

= X=y 把右边的给与左边的

+= X+=y X=X+Y

-= X-=Y X=X-Y

*= X*=Y X=X*Y

/= X/=Y X/=Y

%= X%=Y X=X%Y

.= X.=Y X=XY

连贯赋值运算

$a=$b=666;

递增递减运算符  //自增运算符

++x 前置递增 先加1在返回值

x++ 后置递增 先返回原值 再递增

--x 前置递减 先减1在返回值

x-- 后置递减 先返回原值 在减一

逻辑判断运算符

等于 x==y 如果x=y则返回true

绝对等于 x===y 如果x=y且他们数值类型相等则返回true

不等于 x!=y 如果x不等于y则返回true

不等于 X<>y 如果x不等于y则返回true

不绝对等于 x!==y 如果x不等于y,或他们类型不相同,则返回true

大于 5>2 如果x大于y,则返回true

小于 2<5 如果x小于y,则返回true

大于等于 x>=y 如果x大于或者等于y,则返回true

小于等于 x<=y 如果x小于或者等于y,则返回true

比较运算:比较两个数字的大小等等,返回结果为布尔类型,满足条件为true,不满足为false。

逻辑运算符

与 && x && y 如果x与y都为true,返回true

或 || x||y x与y有一个返回true ,返回true

非 !  ! x x不为true 则返回true

与 and x and y 如果x与y都为true,返回true

或 or x or y x与y有一个返回true ,返回true

异或 xor X xor Y 如果x和y有且仅有一个为true,则返回true

逻辑运算符的区别

And和&&,or和||的主要区别

1.&&||的优先级更高

2.在一个表达式之中,&&与||优先被执行

例子

$boss = true &&false;

Var _dump($boss); //结果为假,这和好理解,&&两边全为真则真,一假整体为假。

但把&&换成and 后则是另一种结果。

$boss = true and false;

Var_dump($boss); //结果为真true,按照道理来讲and 和&&语义一样。

//当第一个例子之中,&&的比重要比=要高,所以必须要先计算完右边的后才会赋值。

//而第二个例子之中,and的比重较低,$boss直接被赋值为真了。后面的and false就掠过了,成为这句子无效的地方了。

那要就想给他and false加进去可以这样。

Var_dump($boss = true and false);

//boss还是被赋值了true,但是后面的 and false执行了,这个var_dump整体输出就是括号里面的真实值了。

逻辑断路

根据&&与||的特性,有时候会发生断路的情况,翻译一下也就是执行了前面就不管后面的情况。

拿与&&举例子,两个都为真才返回真,那第一个数据为假,那么他就不管后面的了,因为这个已经被判定为假的了。

那如果后面的是一个自加自减的变量,他就没变化了,因为直接给他跳过了。

看猫叔的视频给了几个例子辅助思考。

例子

$apex= 1 && print("凤凰急救包");

echo("$apex"); //输出凤凰急救包1,这个1是print返回的,前面的换成2也是1

但要是把前面的换成0,那就不会是显示出来后面的凤凰急救包。

自己根据之前网上卡pink老师的js课程举一个更加容易懂得的例子。

$x=12;

$apex= 1 && var_dump(++$x);

输出一个13,说明自增了。

然后把1换成0,证明逻辑断路。

$x=12;

$apex= 0 && var_dump(++$x);

Echo($x) /结果x是12,x没有自增,被跳过了。

连接运算符

连接运算:将php中多个字符串拼接起来的一种符号。

.   将两个字符串连接到一起

例子: $a= 'Hello World!';

$b=123;

echo "$a.$b";

.=  将两个字符串连接起来,然后重新赋值给左边。

错误抑制符

有一些错误可以提前预知,但又无法避免,不想让用户看见,可以使用错误抑制符 @

例子: $a=10;

$b=0;

($a/$b); 报错

@($a/$b); 不报错

三目运算符

有三个表达式参与的运算(简单分支结构)

表达式1?表达式2:表达式3:

如果表达式1成立那么执行表达式2,否则执行表达式3.

如果表达式比较复杂建议使用()括起来。

$a=10;

$x=($a<10?100:222);

$y=($a=10?100:222);

echo($x),($y)

条件语句(条件分支)

If语句

当条件成立时候执行语句

例:

If(条件)

{

条件成立时候的代码;

}

示例:

<?php

$x=10;

if($x >= 1){

echo("大于1");

};

?> //页面输出大于1。

If else 语句

例:If(条件)

{当条件为真的时候执行的代码 }

else{除了条件为真外时候执行的代码}

示例:

<?php

$x=10;

if($x >= 100){

echo("大于100");

}

else{

echo("没大于100");

};

//输出结果为——没大于100

If elseif else 语句

例子

if(条件){

条件为真执行的语句

}

elseif(条件){

Elseif条件为真执行的语句

}

else{

其他情况执行的语句

};

实例<?php

$x=10;

if($x >= 100){

echo("大于100");

}

elseif($x >9){

echo("大于九");

}

else{

echo("没大于100");

}; //页面输出大于九

?>

If嵌套语句

If的里面还可以嵌套if   elseif   else等等。

多层嵌套的if往往会使人逻辑混乱,更容易写出bug。

例子:

<?php

$x=9;

if($x >= 0){

if($x < 11){

echo("大于0,且小于十一");

}

elseif($x >11){

echo("大于0,且大于十一");

}

else{

print("等于11");

};

}

else{

echo("小于0");

};

?>

Switch语句

什么时候时候用switch,当条件单一且固定时候。

例子

Switch(值)

{

Case label 1:

如果值=label 1 那么此段代码将被执行;

break;

Case label 2:

如果值=label 2 那么此段代码将被执行;

break;

Default:

如果值不等于label1或2,那么将被执行;

}

循环

让一段代码反复的执行。

For循环

适合先知道循环多少次的情况下

for(初始值; 条件; 增量)

{

要执行的代码(叫循环体);

}

初始值:定义一个计数器,以便确认执行代码的次数

条件:如果条件为真true循环继续,条件为假false则停下来。

增量:用于递增计数器。

执行的过程。

初始值—》判断条件—》循环体—》增量—》判断条件^—》循环体^—》******

例子:<?php

for($i=0;$i<10;$i+=1){

echo("x");

print("<br>");

};

?>

这将会输出十个x。

注意点:1. 初始值声明后可以不赋值,如上面的$i=0可以直接写$i,也会输出10个x。

2.增量也可以不写(会无限增加,卡死。)

3.初始值和增量可以写多个值,中间用逗号隔开。如上面的($i=0;$i<10;$i+=1)也可以写($i=0,$y=0;$i<10;$i+=1,$y+=1)

While循环

只要指定的条件成立则一直循环代码块,直至条件不成立。

While()

{

要执行的代码。

}

例子:

<?php

$i=0;

while($i<5){

print("$i");

$i++;

};

?>

Do  while循环

至少循环一次 然后判断条件,条件成立再次执行。

do

{

循环体

}

while(条件);

continue和break的区别

continue是跳出本次循环,break是跳出这个循环体。

注意:continue跳出循环,包括后面的代码,可以参考逻辑断路,直接进行下一次循环,如果不注意此特性,则容易死循环。

例子

首先看正常情况下

<?php

$i=0;

do

{

print("$i");

$i++;

echo"<br>";

}

while($i<5);

?>

输出为0到4.

然后通过if测试一下break

<?php

$i=0;

do

{

print("$i");

$i++;

echo"<br>";

if($i==2){

print"跳过2";

//continue;

break;

};

}

while($i<5);

?>

输出结果是0到1,”加上跳过2“。

break这样是$i到2就跳过了,输出为跳过2。

接下来看continue;

<?php

$i=0;

do

{

print("$i");

$i++;

echo"<br>";

if($i==2){

print"跳过2";

$i++;

continue;

};

}

while($i<5);

?>

除了2以外正常的输出。

break 2

通过break2可以跳出2层循环。

这个2可以是任何数字,当是数字几就是几层循环。

拓展

在php之中,我们想在其中的代码嵌入html时候除了使用echo和print输出之外,还可以通过特殊的写法,把html的标签扩充到里面。

<?php { ?>

<html标签>  </html标签>

<?php } ?>

示例: <?php

echo"xx";

echo ("<hr>");

echo"xx";

?>

<?php{?>

<hr>

<p>xxx</p>

<hr>

<?php}?>

除了用{ 之外,也可以用:endfor。

foreach循环

在数组的底部有介绍。

数组

能在单个变量之中储存多个值,并且根据 键 访问其中的 值。

输出数组

用普通的print与echo直接输出数组只会得到“ Array ”,使用print_r()可以输出数组所有的值。

例:

$ikun=["黑子","真爱粉","反串"];

print_r($ikun); //输出结果为

Array ( [0] => 黑子 [1] => 真爱粉 [2] => 反串 )

数值数组

有两种创建数值数组的方式:

1.$变量名=array(“数组值1”,”数组值2”,”数值值3”);

2.$变量名=[“数组值1”,”数组值2”,”数值值3”];

当需要调用里面的值的时候可以这样。

print($变量名[ 0 ])

变量名【】里面的 键数 代表存入的数值,从零开始对应。

例子:

<?php

$ikun=["黑子","真爱粉","反串"];

print($ikun[0]);//输出黑子

print($ikun[1]);//输出真爱粉

print($ikun[2]);//输出反串

?>

通过键值来指定数组值

当然,也可以通过键值来指定数组值。

$ikun=["黑子","真爱粉","反串"];

$ikun[0]="你干嘛~";

print($ikun[0]);//输出你干嘛

本应该输出“黑子”的值,但是修改后输出“你干嘛”

关联数组

根据上面可以推测,php也可以创造指定的键值与指定的数组值。

$ikun=["黑子","真爱粉","反串"];

$ikun[0]="你干嘛~";

print($ikun[0]); //输出你干嘛

$ikun[66]="你是没见过黑社会郝!";

echo($ikun[66]); //输出你是没见过黑社会郝!

这样创造了ikun数组,66键值对应“你是没见过黑社会郝!”。

键值也可以对应别的,比如把键值改为字母或者别的什么。

$ikun=[];  //创建空数组

$ikun["yyy"]="飞起来!"; //定义键值对应的数组值

echo($ikun["yyy"]); //输出  飞起来

当然,除了在数组外使用 $ikun["yyy"]="飞起来!";,这方法外,也可以通过别的方法来改变对应的键值与数组值。

$数组名{

“黑子”,

“白字”,

“ikun” => “你干嘛~鸭油”

};

通过这种=》可以在数组内部确定键值与其对应的数组值。

获取数组长度的函数  count()

能够输出数组的长度

例子:

<?php

$ikun=["黑子","真爱粉","反串"];

print count($ikun);//输出 3

?>

遍历数组

就是挨个把数组里面的值输出出来。

有两种方法,一种是for循环,一种是

第一种for循环,因为数组的键值默认排序是从0开始,那么利用数组长度函数 count和一个自增变量就可以轻松的遍历数组。

例子:

<?php

$ikun=["黑子","真爱粉","反串"]; //创建数组

for($i=0;$i<count($ikun);$i++){ //创建一个变量i作为计数器,当i小于数组的长度执行内容,执行后对于变量i自增。

echo($ikun[$i]); // 输出数组值,他将会从【0】开始输出,直到条件不成立,那时候将会遍历完整个数组。

print("<br>");

};

?>

但这个会出现一个问题,上面讲过可以自定义键值和对应的数组值,这常常会出一些问题,导致遍历的长度小于实际长度。

例如:

$ikun=["黑子","真爱粉","反串"];

$ikun["xx"]="yyy";

for($i=0;$i<count($ikun);$i++){

echo($ikun[$i]);

print("<br>");

};

这把 $ikun["xx"]="yyy"; 这个值给跳过了,没有输出这个值。很显然i在怎么自增也不会自增成为“xx”。

对于关联数组,我们有其他的方法。

foreach ($数组名 as $变量)

通过foreach ($数组名 as $变量){执行的语句}。 可以把数组里面所有的值依次传输给$变量。($变量每次只保留最后一次传输过来的)

例子:

$ikun=["黑子","真爱粉","反串","ix" => "bag"];

foreach($ikun as $jjxx){

echo"$jjxx";

echo"<br>";

}

这样所有的ikun数组都被输出出来了。

那要是即想要key键值,也想要数组怎么办。

可以通过=>

例子:

$ikun=["黑子","真爱粉","反串","ix" => "bag"];

foreach($ikun as $xx=> $jjxx){

echo"$xx";

echo"$jjxx";

echo"<br>";

}

所有的键值与数组值都被打印出来了。

其中的$xx被赋予了数组的键值,后面的$jjxx被赋予了数组值。

二维数组

也就是一个数组里面还包含数组

例如:

$cxk=array(

      array('xx' => 'age','20'),

      array('cxk','2.5'),

     array('篮球','基尼台没')

);

print_r($cxk);

//运行结果

Array

(

    [0] => Array

        (

            [xx] => age

            [0] => 20

        )

    [1] => Array

        (

            [0] => cxk

            [1] => 2.5

        )

    [2] => Array

        (

            [0] => 篮球

            [1] => 基尼台没

        )

)

多维数组

根据二维数组可知,数组可以多层嵌套

文件包含

在php脚本之中,去将另一个文件包含进来,去合作。

文件包含的作用:

1.:要么使用被包含文件中的内容,实现代码的共享(重复使用) 向上包含(索要)

2.: 要么自己的东西可以给别的文件使用。向下包含(给与)。

文件包含的四种形式

在php之中文件包含有四种形式(两种大形势)

Include:包含文件

Include_once:系统会自动判断是否已经被包含了一次

Require:包含文件

Require_once:与Include_once一样。

Include和require的区别

Include 系统碰到一次执行一次

Include_once 只执行一次

Include和require本质都是包含文件,只有报错提示不一样。

文件包含的基本语法

Include’文件名称’

Include(’文件名称’)

文件加载原理

  1. 在加载文件时候(include或者request)系统会自动把包含文件的代码嵌入当前文件之中。

2.在哪里加载,对应代码嵌入的位置就是在哪里,在对应的include或者require

3.在php之中包含的文件是单独编译的。

注意php编译过程出错会报错,引入的文件有错误只有当执行到的时候才会报错。

文件加载路径

加载路径分为两大类

1.绝对路径 从根目录开始

2.相对路径 从当前目录开始

文件嵌套包含

a包含b包含c包含a

如上形成循环。

这里注意一下相对路径的问题,当一个文件加载另一个文件之时,那文件的相对路径会发生变化,转变为包含他的文件路径。

函数

基本概念

函数(function),是一种语法结构,将实现某一个功能的代码块封装到一个结构之中,从而实现代码的重复使用。

函数有着几个关键点 function 关键字 函数名 参数(形参和实参),函数体返回值。

函数在编译阶段不执行,只有使用时候才会调用。也就是说下面的haha()可以在定义之前就调用。

函数体:函数内部的所有代码。

返回值:所有函数都有返回值,如果没用return指定,那么函数默认返回为空(null)

基本语法

Function 函数名(参数){

//函数体

//返回值,结果。

}

示例:

function haha(){

echo"篮球";

}

haha(); //输出篮球

函数的命名注意与变量的命名注意类似。

函数形参实参

形参

形式参数,不具备实际意义,在函数定义时使用的参数。

实参

实际参数,具有实际意义的参数,在调用时候使用的参数。

示例:

定义函数

Function cxk($篮球,$基){

Echo $篮球+$基;

}

Cxk(10,20) //输出30

上面的篮球和基就是形参,10,20就是实参

函数改变外部变量

有时候希望用函数改变量的值,那么可以使用&

示例:function($add1,&$app){

}

实参这里必须用变量,因为变量才有内存地址,才会改写。

例子:

function cxk(&$篮球,$基){

$篮球=$篮球*2;

$基=$基*2;

echo $篮球,$基;

}

$a=10; //注意这里是10

$b=20;

cxk($a,$b);

echo $a; //这里就发生了改变,变成了20,实参被形参所修改了

返回值

所有函数都有返回值,如果没用return指定,那么函数默认返回为空(null)

示例:

function cxk($篮球,$基){

return $篮球+$基; //这里返回值给cxk这个函数

}

$两年半=cxk(10,33); //把cxk函数的返回值给与$两年半这个变量。

echo $两年半;

return的出现代表着函数结束,后面的代码不在执行。

示例:function cxk($篮球,$基){

return $篮球+$基;

echo"大碗宽面";

}

$两年半=cxk(10,33);

echo $两年半;

大碗宽面消失了,不再会被输出。

return在文件之中也可以出现,把整个php文件想象为一个大函数,在文件之中时候,同样后面的内容将不会在被解析。

常用系统函数

  1. 有关输出的函数

    1. Print() 类似于echo,返回一个值为1。
    2. Print_r() 与var——dump类似,但不会输出数据类型,只输出值。常见于数组打印。
  2. 有关时间的函数

    • Date() 按照指定格式对应的时间戳,若没有指定格式的时间戳,那默认解释现在的时间戳。从1970年开始计算的秒数。
  • 例子:echo date('y年,m月,d日');//24年,10月,18日,解析了我写程序时候的时间。
  •  echo date('y年,m月,d日',123456); //70年,01月,02日,给date函数一个时间戳,解析出了123456的时间戳对应的y,m,d(年月日)
  • Time() 获取当前的时间戳。

    Microtime() 获取微秒级别的时间戳。
  • Strtotime()  将特定的字符串变成时间戳,实际开发很常用,几乎囊括所有可能。

                例子:echo strtotime(‘tomorrow 10 hours’);

  • 有关数学的函数

    1. Max() :指定参数中最大的值

例子:$a=10; $b=20;

echo max($a,$b);

//因为20比10大,所以输出20

例子2:$ikun=[10,20,30,40];

echo max($ikun);//输出为40,可以筛选出数组中最大的数。

    1. Min :指定参数中最小的值,用法与max一样。
    2. Rand:产生一个随机整数。rand(int $变量,int $变量)

例子:echo rand(3,9);//结果会是输出3~9之间的一个随机整数。

    1. Mt_rand:使用 Mersenne Twister 算法生成随机整数。速度是rand的4倍
    2. Round:四舍五入

示例:echo round(3.44),"<br>";//输出为3

echo round(3.54);//输出为4

    1. Ceil: 向上取整。返回不小于 x 的下一个整数,x 如果有小数部分则进一位。

例子:echo ceil(0.60); //1

echo ceil(5); //5

echo ceil(5.1); //6

echo ceil(-5.1); ///-5

    1. Floor:向下取整。返回不 x 的下一个整数,x 如果有小数部分则减小1

例子:echo floor(0.60); //0

echo floor(5); //5

echo floor(5.1); //5

echo floor(-5.1); //-6

    1. Pow:求指定数字的指定指数次的结果。

如pow(2,4)== 2^4 ==2*2*2*2 ==16

    1. Abs:绝对值。
    2. Sqrt:开x的算术平方根。

从数学角度来说:如100的平方根等于+10与-10,因为+10与-10乘上自身等于100。0的平方根是0,负数没有平方根,因为不论什么数字的平方都不可能是负数。

从编程角度如果参数 x 是负数,则 sqrt() 函数返回 -1.#IND。

例如:echo sqrt(100);  //10

echo sqrt(0); //0

echo sqrt(1); //1

echo sqrt(0.16); //0.4

有关函数的函数

Function_exists() :判定指定函数名字是否存在

示例:

function xx(){}; //创建一个函数

var_dump( Function_exists('a')); //输出为bool(false),因为函数a不存在

echo"<hr>"; //分割

var_dump(function_exists('xx')); //输出为bool(true),函数xx是存在的

Function_get_args() :在自定义函数之中获取所有实参的值,并以数组的形式输出。

示例:function xax($a,$b){

var_dump(func_get_args());

}

xax(1,2,$A,'4');

输出结果为:array(4) {

  [0]=>

  int(1)

  [1]=>

  int(2)

  [2]=>

  NULL

  [3]=>

  string(1) "4"

}

Function_get_arg() :在自定义函数之中获取指定实参的值,并以数组的方式进行输出。

示例:function xax($a,$b){

var_dump(func_get_arg(1));

}

xax(1,2,$A,'4'); //int 2

Function_num_args() :获取当前自定义函数的实参数数量

示例:function xax($a,$b){

var_dump(func_num_args());

}

xax(1,2,$A,'4');

  1. 有点用,但是没什么用的函数
    1. __FUNCTION__ 输出当前函数的名字。

作用域

变量,常量能访问的区域

php的三种作用域

全局变量:用户正常写的

局部变量:在函数内部写的

超全局变量。

        //理论上说在函数内部不允许调用全局变量

示例:

$a=10;

function cxk(){

echo $a;

}

cxk();//什么也不会输出。

        //理论上说全局变量也不允许调用函数内部变量。

示例:

function cxk(){

$a=10;

}

cxk();

echo $a;

超全局变量:系统定义的变量

通过超全局变量的特殊性,我们可以利用$GLOBALS让函数内部访问到全局变量。

$GLOBALS会把所有的全局变量以数组的形式存储到自身,利用这个特殊的性质,可以在函数内部使用全局变量,只需要像是使用数组一样。

var_dump($GLOBALS)可以看见所有的全局变量等。

示例:

$a=10;

function cxk(){

echo $GLOBALS['a'];

}

cxk();//输出10

    1. 通过返回值 return可以实现全局变量访问函数内部,具体例子如+返回值+ 地方的例子
    2. $global关键字 实现函数内部访问全局变量的一种方式
  1. 如果global在函数内定义的变量名外部存在,那么直接访问该变量内存空间。
  2. 如果不存在,将在全局变量的空间内创建一个新的变量。

示例:

Global 变量名 //这时候不可以直接赋值

变量名=值;

function cxk(){

    global $ikun;

    $ikun=114514;

}

cxk();//这里必须调用一下,不然输出不出来。

echo $ikun;

虽然上述可以实现局部与全局的访问,但通常不建议这样做,一般会使用参数或者常量来实现。

脚本周期:直到脚本运行结束。

函数周期:函数执行结束(函数在栈区单独开辟一个内存运行空间)

函数进阶

静态函数

当多次调用一个函数的时候,希望保存其中的值,这时候可以使用静态函数。

因为根据函数周期,从一个函数被调用,到执行完毕,函数的所有东西都将回收,那重复调用的时候,还是给零开始,有时候希望保存一些数据,这时候静态变量就有用了。

//比如查看当前函数被调用的次数。

静态变量:Static

基本语法:function 函数名(){

//定义变量

Static $变量名=值;//通常定义的时候直接赋值

}

示例:

function cxk(){

    $a=1;

static $b=1;

echo $a," ",$b," ";//这里是为了看起来美观,实际上只写变量a与b也 行。

$a++;

$b++;

}

cxk();

cxk();

cxk();

//结果为 1 1 1 2 1 3

可变函数

当一个变量所保存的值是另一个函数的名字时候,那么可以用这个变量的值加上“()”来使用那个函数。

//跟变量那一节的可变变量差不多。

示例:

function cxk(){

    echo"只因你太美";    

}

$小黑子='cxk';

echo $小黑子;   //输出为cxk

echo $小黑子();     //输出为只因你太美

函数回调

一个函数调用另一个函数的过程

示例:

function cxk($hz1,$hz2){

    $hz2+=2;

    return $hz1($hz2);

}

function lq($ikun){

    

    return $ikun=$ikun/2;

    

}

echo cxk('lq',5); //注意lq是‘’起来的。

解释:1.首先是执行到  echo cxk('lq',5);,然后把实参带入到cxk函数的形参

      2.echo cxk('lq',5);的5会被带入为$hz2,然后加上2

    3.这时候返回值给 echo cxk('lq',5);,但是因为可变函数,调用了下面的函数,先不返回值,先对下面的函数进行分析。

  4.lq函数是对于自身除以个2,然后返回值给cxk函数,cxk函数这时候在把值给echo cxk('lq',5);,最终输出为3.5。

匿名函数

基本概念:没有名字的函数。

语法:

Function(){

}; //注意引号;

实际开发中会把一个变量名=该函数不然永远无法实现调用。

示例:

$a=function (){

    echo("说的道理");

};

$a(); //直接变量+()使用。

闭包;函数内部有一些局部变量,在函数执行之后没有被释放。

//可能是匿名函数,函数内部还有函数等。

伪类型

假的类型,实际在php之中不存在的类型,但是通过伪类型可以帮助程序员更好的查看手册。

Mixed:混合型,可以是多张php类型

Number:任意数值型,整数和浮点数。

也就是说,除了查手册没什么用处。

错误处理

指系统或者用户在对于某些代码进行执行的时候,发现错误就会通过错误处理报告给程序员。

错误分类

1语法错误 用户书写不规范导致的错误,代码不会执行(parse error)

2运行时错误 代码编译通过,但是一些条件不满足(runtime error)

错误代号

1系统错误

E_PARSE:编译错误,代码不会执行

E_ERROR: fatal error 致命错误,会在错误的地方断开

E_WARNING: warning 警告错误,不会影响执行,但可能出现意料的结果

E_NOTICE: notice 通知错误,不会影响代码执行

2 用户错误

用户自定义错误触发的时候

3 其他

所有从错误,开发环境偶尔会使用。

错误显示

在php之中有两种方式来配置错误。

  1. 在php的配置文件ini里面更改
    1. Display errors:受否显示错误
    2. Error reporting :显示什么级别的错误。
  2. 在写php代码页面更改,在php代码界面的优先级高于ini配置文件。

错误日志

实际开发制作之中不方便直接给用户看报警的错误,不安全不美观。所以使用错误日志只让程序员观看。

1开启日志

在php的ini配置文件之中找到log_errors =on前面的;删掉

2 指定路径

Error log 配置项

在php的配置文件ini之中,找到 error log (后面跟着想要错误日志出现的路径)

例如: error _log = ‘E/CXK/PHP25/error.log’

字符串转义

在计算机通用协议之中,有一些字符有着特殊定义。通常是\+字符,的形式出现。

如\r : //回车。

 \n : //新一行

注意,单引号和双引号的对于这里会有区别,单引号可以识别出,双引号无法识别出。

双引号可以解析$ 也就是可以解析变量。

例子:

$a=”飞起来”

Echo “ xx $a yy ” // xx$ayy

Echo ‘ xx $a yy ’ //xx 飞起来 yy

这个样子的 飞起来 会有空格,如何让这空格消失。

 Echo ‘xx{$a}yy’ //xx飞起来yy

通过 {} 就可以实现让{}消失。

用函数判断字符串长度

Strlen(变量)

示例:

$cxk=’篮球’;

Echo strlen($cxk);//6 中文字符占据3个字节

因为早期历史遗留问题,多字节的字符串长度问题。

1开启php的ini拓展里面的mbstring。

2mb拓展带来了很多函数,具体使用百度或者实践之中遇到。例如mb_strlen,和strlen差不多。

3mb_strlen可以用于特定的编码来解析占用的字节。

//例如

Mb_strlen($a,’utf-8’)

字符串相关函数

1转换函数:implode() explode( )  str_split( )

Implode:将数组变成字符串

语法:

implode(separator,array)

separator 可选。规定数组元素之间放置的内容。默认是 ""(空字符串)。

array 必需。要组合为字符串的数组。

示例:

$arr = array('篮球','唱','跳','rep');

echo implode(" ",$arr); //输出结果为  篮球 唱 跳 rep

Explde:将字符串变成数组

语法:explode(separator,string,limit)

separator 必需。规定在哪里分割字符串。

string 必需。要分割的字符串。

limit     可选。规定所返回的数组元素的数目。

示例:

$str = 'one,two,three,four';

print_r(explode(',',$str)); 

//Array

(

    [0] => one

    [1] => two

    [2] => three

    [3] => four

)

Str_split:将字符串变成数组,按照字节数来变成。

语法:

str_split(string , int)

String :要转换的字符串

Int:按照多少字节分割

示例:

$str = "Hello";

$arr1 = str_split($str);

$arr2 = str_split($str, 2);

print_r($arr1);

//Array

(

    [0] => H

    [1] => e

    [2] => l

    [3] => l

    [4] => o

)

Array

(

    [0] => He

    [1] => ll

    [2] => o

)

2截取函数:trim() ltrim() rtrim()

Trim:移除字符串两侧的字符,默认是去掉两边的空格的,也可以指定去除两边的内容

语法:trim(string,charlist)

string 必需。规定要检查的字符串。

charlist 可选。规定从字符串中删除哪些字符。如果被省略,则移除以下所有字符:

"\0" - NULL

"\t" - 制表符

"\n" - 换行

"\x0B" - 垂直制表符

"\r" - 回车

" " - 空格

示例:

$str = "OTTO";

echo $str . "<br>";

echo trim($str,"O");

?>//结果为 OTTO<br>TT 两边的O被去掉了。

Ltrim去除左边的

Rtrim去除右边的

3截取函数:substr()   strstr()

Substr:返回字符串的一部分

语法:substr(string,start,length)

string 必需。规定要返回其中一部分的字符串。

start     必需。规定在字符串的何处开始。

正数 - 在字符串的指定位置开始

负数 - 在从字符串结尾开始的指定位置开始

0 - 在字符串中的第一个字符处开始

length 可选。规定被返回字符串的长度。默认是直到字符串的结尾。

正数 - 从 start 参数所在的位置返回的长度

负数 - 从字符串末端返回的长度

示例:echo substr("Hello world",6);//结果为world

Strstr:从指定位置开始,截取到最后

示例:echo strstr("I love Shanghai! ikun cxk","Shanghai");  //输出为Shanghai! ikun cxk

大小写转换函数 strtolower() strtoupper()  ucfirst()

strtolower():把所有字符转换为小写

示例:echo strtolower("Hello WORLD.");//hello world.

Strtoupper():把所有字符转换为大写

示例:echo strtoupper("hello world."); //HELLO WORLD.

Ucfirst():首字符转换为大写

示例:echo ucfirst("hello world!");//Hello world!

查找函数 strpos() strrpos()

Strpos:查找在字符串中第一次出现的位置:

示例:echo strpos("你 是 真 没 见 过 黑 社 会 哈","是");//4

echo strpos("ikun","u");//2

中文占据3个字节,从0位开始算起

Strrpos:查找在字符串中最后一次出现的位置

替换函数 str_replace()

以其他字符替换字符串中的一些字符

示例:

$a='wo shi ikun';

echo str_replace("wo","ni","$a");//ni shi ikun

语法:

str_replace(find,replace,string,count)

find 必需。规定要查找的值。

replace 必需。规定替换 find 中的值的值。

string 必需。规定被搜索的字符串。

count 可选。对替换数进行计数的变量。

补充示例:

$arr = array("blue","red","green","yellow","red","red");

print_r(str_replace("red","pink",$arr,$i));

echo "替换数:$i";//替换数:3

//因为在上面的例子中red被替换了3次

格式化函数 printf() sprintf()

Printf/sprintf:格式化输出语句。

示例:

$a="蔡徐坤";

$b=2.5;

printf("大家好,我是%s,练习篮球%f年",$a,$b) //大家好,我是蔡徐坤,练习篮球2.500000年

语法:

printf(format,arg1,arg2,arg++)

format 必需。规定字符串以及如何格式化其中的变量。

可能的格式值:

%% - 返回一个百分号 %

%b - 二进制数

%c - ASCII 值对应的字符

%d - 包含正负号的十进制数(负数、0、正数)

%e - 使用小写的科学计数法(例如 1.2e+2)

%E - 使用大写的科学计数法(例如 1.2E+2)

%u - 不包含正负号的十进制数(大于等于 0)

%f - 浮点数(本地设置)

%F - 浮点数(非本地设置)

%g - 较短的 %e 和 %f

%G - 较短的 %E 和 %f

%o - 八进制数

%s - 字符串

%x - 十六进制数(小写字母)

%X - 十六进制数(大写字母)

附加的格式值。必需放置在 % 和字母之间(例如 %.2f):

+ (在数字前面加上 + 或 - 来定义数字的正负性。默认地,只有负数做标记,正数不做标记)

' (规定使用什么作为填充,默认是空格。它必须与宽度指定器一起使用。)

- (左调整变量值)

[0-9] (规定变量值的最小宽度)

.[0-9] (规定小数位数或最大字符串长度)

注释:如果使用多个上述的格式值,它们必须按照上面的顺序进行使用,不能打乱。

arg1 必需。规定插到 format 字符串中第一个 % 符号处的参数。

arg2 必需。规定插到 format 字符串中第二个 % 符号处的参数。

arg++ 可选。规定插到 format 字符串中第三、四等等 % 符号处的参数。

sprintf与printf类似

其他 str_repeat() str_shuffle()

 str_repeat():把字符串 "Shanghai " 重复 5 次

示例:

echo str_repeat("ikun",3); //ikunikunikun

Str_shuffle() :随机地打乱字符串中的所有字符

示例:

echo str_shuffle("Hello World"); //dWlleoorHl||eWdllorl Ho||l WelHldoor

数组排序函数

排序函数:按照ascll码进行比较。

1.Sort:顺序排序

示例:

$a=array(0,5,2,6);

$b=sort($a);

//或者直接写sort($a);

print_r($a);

//输出结果是

/*Array

(

    [0] => 0

    [1] => 2

    [2] => 5

    [3] => 6

)

把数组的值从小到大更改了顺序

2.Rsort:逆序排序

//与sort用法一样,不过是大小排序的值相反

3.asort:顺序排列,保留引索值

例子:

$a=array(1,14,51,4);

print_r($a);

asort($a);

print_r($a);

//运行结果

Array

(

    [0] => 1

    [1] => 14

    [2] => 51

    [3] => 4

)

Array

(

    [0] => 1

    [3] => 4

    [1] => 14

    [2] => 51

)

也就是说索引值没变,但是顺序变了。

Arsort:逆序排列,保留引索值

Ksort:按照键名对关联数组进行升序排序

示例:

$a=array("Steve"=>"56","mark"=>"31","Bill"=>"60");

print_r($a);

ksort($a);

print_r($a);

//运行结果

Array

(

    [Steve] => 56

    [mark] => 31

    [Bill] => 60

)

Array

(

    [Bill] => 60

    [Steve] => 56

    [mark] => 31

)

Krsort:按照键名对关联数组进行逆序排序

Shuffle:随机打乱数组,用法与上述一样。

指针函数:

Reset():重置指针,回到首位

End():重置指针,回道末尾

Next():将数组内部的指针向前移动一位

Prev():将数组内部的指针向后移动一位

Current():获取当前指针对应的元素

Key():获取当前指针对应的引索值

示例1:

$a=array('ikun','cxk','s');

echo current($a);//ikun

echo key($a);//0

示例2:

$a=array('ikun','cxk','s');

echo current($a);//ikun

next($a);

echo(current($a));//cxk

prev($a);

echo(current($a));//ikun

示例3:

$a=array('ikun','cxk','s');

echo current($a);//ikun

end($a);

echo current($a);//s

reset($a);

echo current($a);//ikun

注意事项:当通过next或者prev导致离开了数组,这时候就无法通过上一位下一位回来了。只能用end或者reset重置了。

其他数组相关函数

Count:统计数组之中值的数量

示例:

$a=array(1,12,14,5,115);

echo count($a);//5  从1开始数。

Array_push():从数组之中加入一个元素。数组后面。

示例:

$a=array("red","green");

array_push($a,"blue","yellow");

print_r($a);//这时候上面的“blue与yellow都进去了”

Array_pop();从数组之中取出一个元素。数组后面。

示例:

$a=array("red","green","kun");

print_r($a);

array_pop($a);

print_r($a);//这时候kun就被删掉了

Array_shift:从数组之中取出一个元素。数组前面。

示例:

$a=array("red","green","kun");

print_r($a);

array_shift($a);

print_r($a);//这时候red就被删掉了,引索0也变成了green

Array_unshift:从数组前面增加一个元素。

示例:

$a=array("red","green","kun");

print_r($a);

array_unshift($a,"小黑子");

print_r($a);//这时候red前面会出现一个小黑子,小黑子的索引值是0

Array_reverse():把数组元素翻过来。

示例:

$a=array("red","green","kun");

print_r($a);

print_r(array_reverse($a));//数组的输出结果倒过来了,kun变成了索引值0

print_r($a);//他是不对数组进行修改的

In_array():判断数组之中存在某个元素吗

例子:

$a=array("red","green","kun");

echo in_array("red",$a);//返回了1,也就是存在,不存在的不反

回任何

例子2:

$a=array("red","green","kun");

if(in_array("red",$a)){

    echo("存在");

}

else{

    echo("不存在");

}

Array_keys():获取一个数组的所有引索值返回一个数组

Array_values():获取一个数组的所有值并返回一个数组