PHP学习
学习:函数,字符串,数组,日期和时间,变量,运算符,类,面向对象。
1.函数
函数的命名不能以数字和点开头但可以用_
PHP 函数调用
<?php
function study()
{
echo "functions";
}
echo "I love learning";
study();//函数调用
?>
输出:
I love learning functions
PHP 函数 - 添加参数
<?php
function bookname($a,$b)
{
echo $a . " and the teacher is " . $b . "<br>";//.为并置运算符,添加了两个参数在bookname函数里
}
echo "The name of the first book is";
bookname("Advanced mathematics"," .");
echo "The name of the second book is";
bookname("C language"," .");
echo "The name of the third book is";
bookname("data structure"," .");
?>
输出:
The name of the first book isAdvanced mathematics and the teacher is .
The name of the second book isC language and the teacher is .
The name of the third book isdata structure and the teacher is .
php引用参数
<?php
$a=1;$b=2;
function hanshu($a,&$b){
$a++;
$b++;
}
hanshu($a,$b);//改变实参$b的值
echo $a,$b;
?>
输出:
13
PHP 函数 - 返回值
<?php
function Return_value($x,$y)
{
$total=$x+$y;
print($total);//返回一个值
echo "<br>";
var_dump($total);//可以返回一个或多个表达式达式的类型与值并接着往下运行
echo "<br>";
return $total;//让函数返回一个值并结束
}
echo "1 + 16 = " . Return_value(1,16);
?>
输出:
17
int(17)
1 + 16 = 17
PHP 字符串变量
PHP 中的字符串变量
<?php
$txt="Hello world!"; //创建一个叫为txt的字符串变量,并赋值为 "Hello world!"
echo $txt;
?>
//当赋给一个文本值给变量时,给文本值加上单引号或者双引号。
输出:
Hello world!
PHP 并置运算符
<?php
$a="My name is";
$b="long.";
echo $a . " " . $b;
?>
输出:
My name is long.
PHP strlen() 函数
strlen() 函数返回字符串的长度(字节数)。
<?php
echo strlen("Hello world!");
?>
输出:
12
PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
<?php
echo strpos("Hello world!","world");
?>
字符串 “world” 的位置是 6。之所以是 6 而不是 7 的原因是,字符串中第一个字符的位置是 0,而不是 1。
输出:
6
String 函数:
bin2hex():把 ASCII 字符的字符串转换为十六进制值。
chop():移除字符串右侧的空白字符或其他字符。
chr():从指定 ASCII 值返回字符。
chunk_split():把字符串分割为一连串更小的部分。
convert_uudecode():对 uuencode 编码的字符串进行解码。
convert_uuencode():使用 uuencode 算法对字符串进行编码。
count_chars():返回字符串所用字符的信息。
echo():输出一个或多个字符串。
hex2bin():把十六进制值的字符串转换为 ASCII 字符。
lcfirst():把字符串中的首字符转换为小写。
levenshtein():返回两个字符串之间的 Levenshtein 距离。
ltrim():移除字符串左侧的空白字符或其他字符.。
ord():返回字符串中第一个字符的 ASCII 值。
print():输出一个或多个字符串。
printf():输出格式化的字符串。
str_ireplace():替换字符串中的一些字符(大小写不敏感)。
str_replace():替换字符串中的一些字符(大小写敏感)。
str_word_count():计算字符串中的单词数。
PHP 数组
数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中创建数组
在 PHP 中,array() 函数用于创建数组:
array();
PHP 数值数组
这里有两种创建数值数组的方法:
自动分配 ID 键(ID 键总是从 0 开始):
$name=array(“Wang Wu”,“Zhang San”,“Li Si”);
人工分配 ID 键:
$name[0]="Wang Wu";
$name[1]="Zhang San";
$name[2]="Li Si";
<?php
$name=array("Wang Wu","Zhang San","Li Si");
echo "Your name is " . $name[0] . ".My name is " . $name[1] . ".His name is " . $name[2] . ".";
?>
输出:
Your name is Wang Wu.My name is Zhang San.His name is Li Si.
获取数组的长度 - count() 函数
count() 函数用于返回数组的长度(元素的数量):
<?php
$name=array("Wang Wu","Zhang San","Li Si");
echo count($name);
?>
输出:
3
遍历数值数组
<?php
$name=array("Wang Wu","Zhang San","Li Si");
$length=count($name);//获取数组长度赋值给length
for($x=0;$x<$length;$x++)//依次输出数组中的所有值
{
echo $name[$x];
echo "<br>";
}
?>
输出:
Wang Wu
Zhang San
Li Si
PHP 关联数组
关联数组是使用您分配给数组的指定的键的数组。
这里有两种创建关联数组的方法:
$surname=array(“Wang”=>“Wu”,“Zhang”=>“San”,"Li "=>“Si”);
或者:
$surname[‘Wang’]=“Wu”;
$surname[‘Zhang’]=“San”;
$surname[‘Li’]=“Si”;
<?php
$surname=array("Wang"=>"Wu","Zhang"=>"San","Li "=>"Si");
echo "Surname is Wang," . "name is " . $surname['Wang'];
?>
Surname is Wang,name is Wu
遍历关联数组
<?php
$surname=array("Wang"=>"Wu","Zhang"=>"San","Li "=>"Si");
foreach($surname as $x=>$x_value)
{
echo "surname=" . $x . ", name=" . $x_value;
echo "<br>";
}
?>
输出:
surname=Wang, name=Wu
surname=Zhang, name=San
surname=Li , name=Si
PHP date() 函数
PHP date() 函数用于格式化时间/日期。
PHP Date() - 格式化日期
d :代表月中的天 (01 - 31)
m: 代表月 (01 - 12)
Y : 代表年 (四位数)
H:小时,24 小时格式,有前导零
i :有前导零的分钟数
s:秒数,有前导零
<?php
echo date("Y/m/d/H:i:s");
?>
输出:
2020/04/12/16:27:42
PHP 变量
变量是用于存储信息的"容器":
与代数类似
<?php
$a=5;
$b=6;
$c=$a+$b;
echo $c;
?>
输出:
11
PHP 变量规则:
变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)
局部和全局作用域
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
<?php
$x=5; // 全局变量
functiona()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}
a();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>
输出:
测试函数内变量:
变量 x 为:
变量 y 为: 10
测试函数外变量:
变量 x 为: 5
变量 y 为:
PHP global 关键字
global 关键字用于函数内访问全局变量。在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:
<?php
$x=5;$y=10;
function a()
{
global $x,$y;
$y=$x+$y;
}
a();
echo $y; // 输出 15
?>
或者:
<?php
$x=5; $y=10;
function a()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
a();
echo $y; // 输出 15
?>
Static 作用域
<?php
function a()
{
static $x=0;//每次调用该函数时,该变量将会保留着函数前一次被调用时的值
echo $x;
$x++;
}
a();a();a();
?>
//该变量仍然是函数的局部变量。
PHP 运算符
PHP 算术运算符
<?php
$x=1; $y=2;
echo($x + $y); //加 输出3
echo("<br>"); //换行
echo($x - $y); //减 输出-1
echo("<br>");
echo($x * $y); //乘 输出2
echo("<br>");
echo($x / $y); //除 输出0.5
echo("<br>");
echo($x % $y); //取余 输出0
echo("<br>");
echo -$x;//取相反数 输出-1
echo("<br>");
?>
输出:
3
-1
2
0.5
1
-1
PHP 赋值运算符
<?php
$i=1;$j=2;
$i = $j; //把右边的值赋给左边
echo $i; //输出2
echo("<br>");
$i += $j; //==$i=$i(2)+$j(2)
echo $i; //输出4
echo("<br>");
$i -= $j; //==$i=$i(4)-$j(2)
echo $i; //输出2
echo("<br>");
$i *= $j; //==$i=$i(2)*$j(2)
echo $i; //输出4
echo("<br>");
$i /= $j; //==$i=$i(4)/$j(2)
echo $i; //输出2
echo("<br>");
$i %= $j; //==$i=$i(2)%$j(2)
echo $i; //输出0
echo("<br>");
?>
输出:
2
4
2
4
2
0
PHP 递增/递减运算符
<?php
$a=1;$b=2;$c=1;$d=2;
echo ++$a; //a先加1再返回,输出2
echo("<br>");
echo $c++; //c先返回后加1,输出1
echo("<br>");
echo --$b; //b先减1后返回,输出1
echo("<br>");
echo $d--; //d先返回后减1,输出2
echo("<br>");
?>
输出:
2
1
1
2
PHP 比较运算符
<?php
$e=1;$f="1";
var_dump($e == $f);//等于 1==1 输出true
echo "<br>";
var_dump($e === $f);//绝对等于,类型也要相同,1==="1" 输出false
echo "<br>";
var_dump($e != $f);//不等于 1!=1 输出false
echo "<br>";
var_dump($e !== $f);//绝对不等于,类型也不相同,1!=="1" 输出true
echo "<br>";
$g=1;$h=2;
var_dump($g > $h);//大于,1>2 输出false
echo "<br>";
var_dump($g < $h);//小于,1<2 输出true
echo "<br>";
var_dump($g >= $h);//小于,1>=2 输出false
echo "<br>";
var_dump($g <= $h);//小于,1<=2 输出true
echo "<br>";
?>
输出:
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)
PHP 逻辑运算符
<?php
$o=2;$p=5;
var_dump($o<1 and/*(&&)*/ $p>2);//和,2<1和(&&)5>2 输出false
echo "<br>";
var_dump($o<1 or/*(||)*/ $p>2);//或,2<1或(||)5>2 输出true
echo "<br>";
?>
输出:
bool(false)
bool(true)
PHP 数组运算符
<?php
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
输出:
array(4) { [“a”]=> string(3) “red” [“b”]=> string(5) “green” [“c”]=> string(4) “blue” [“d”]=> string(6) “yellow” }
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
三元运算符
另一个条件运算符是"?:"(或三元)运算符 。
(a1) ? (a2) : (a3) ;
表达式 a1 ?: a3 在 a1 求值为对时返回 a2,否则返回 a3。
<?php
$a = '1+1=2';
$b = ($a) ? $a : '3';
echo $b;
?>
输出:
1+1=2
组合比较符
$c = $a <=> $b;
如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则 $c 的值为 -1
<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
输出:
0-110-110-11
PHP 面向对象
对象的主要三个特性:
对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。
对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。
对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。
面向对象内容
类 : 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
对象 : 是类的实例。
成员变量 : 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。
成员函数 : 定义在类的内部,可用于访问对象的数据。
继承 : 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
父类 : 一个类被其他类继承,可将该类称为父类,或基类,或超类。
子类 : 一个类继承其他类称为子类,也可称为派生类。
多态 : 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
重载 :简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
抽象性 : 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
封装 :封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
构造函数 : 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
析构函数 : 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
PHP 类定义
类使用 class 关键字后加上类名定义。
类名后的一对大括号({})内可以定义变量和方法。
类的变量使用 var 来声明, 变量也可以初始化值。
函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。
<?php
class Site {
/* 变量 */
var $url;
var $title;
function __construct( $par1, $par2 ) {
$this->url = $par1;
$this->title = $par2;
}
/* 函数 */
function setUrl($par){
$this->url = $par;
}
function getUrl(){
echo $this->url . PHP_EOL;
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title . PHP_EOL;
}
}
?>
变量 $this 代表自身的对象。
PHP 中创建对象
$a = new Name;
调用成员方法
// 调用函数,设置名字和年龄
$a->setname( "Zhang San" );
$a->setage( '18' );
// 调用函数,获取名字和年龄
$a->getname();
$a->getage();
<?php
class Name {
/* 变量 */
var $age;var $name;
/* 函数 */
function setage($b){
$this->age = $b;
}
function getage(){
echo $this->age;
}
function setname($b){
$this->name = $b."<br>";
}
function getname(){
echo $this->name;
}
}
$a = new Name;
// 调用函数,设置名字和年龄
$a->setname( "Zhang San" );
$a->setage( '18' );
// 调用函数,获取名字和年龄
$a->getname();
$a->getage();
?>
输出:
Zhang San
18
PHP 构造函数
<?php
class Name {
/* 成员变量 */
var $age;
var $name;
function __construct($a,$b) {
$this->age = $a;
$this->name = $b;
}
/* 成员函数 */
function setage($a){
$this->age = $a;
}
function getage(){
echo $this->age;
}
function setname($a){
$this->name = $a;
}
function getname(){
echo $this->name."<br>";
}
}
$n = new Name('18', 'Zhang San');
// 调用成员函数,获取标题和URL
$n->getname();
$n->getage();
?>
通过构造函数方法来初始化 $age 和 $name 变量就不需要再调用 setname 和 setage 方法了
输出:
Zhang San
18