php基础

echo和print

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

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

EOF(heredoc)

  • 必须后接分号,否则编译通不过。
  • EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  • 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  • 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  • 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

类型比较

虽然 PHP 是弱类型语言,但也需要明白变量类型及它们的意义,因为我们经常需要对 PHP 变量进行比较,包含松散和严格比较。

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。
if(42 == "42") {
    echo '1、值相等';
}
 
echo PHP_EOL; // 换行符
 
if(42 === "42") {
    echo '2、类型相等';
} else {
    echo '3、类型不相等';
}
--------------------------------------
1、值相等
3、类型不相等

常量

设置常量,使用 define() 函数,函数语法如下:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

该函数有三个参数:

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

运算符

算术运算符

运算符 名称 描述 实例 结果
x + y x 和 y 的和 2 + 2 4
x - y x 和 y 的差 5 - 2 3
x * y x 和 y 的积 5 * 2 10
x / y x 和 y 的商 15 / 5 3
x % y 模(除法的余数) x 除以 y 的余数 5 % 2 10 % 8 10 % 2 1 2 0
- x 取反 x 取反 <?php $x =2; echo -$x; ?> -2
a . b 并置 连接两个字符串 "Hi" . "Ha" HiHa

PHP7+ 版本新增整除运算符 intdiv(),该函数返回值为第一个参数除于第二个参数的值并取整(向下取整),使用实例:

var_dump(intdiv(10, 3));
---------------------------
    int(3)

PHP 赋值运算符

运算符 等同于 描述
x = y x = y 左操作数被设置为右侧表达式的值
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y 模(除法的余数)
a .= b a = a . b 连接两个字符串

递增递减运算符

运算符 名称 描述
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
-- x 预递减 x 减 1,然后返回 x
x -- 后递减 返回 x,然后 x 减 1

比较运算符

运算符 名称 描述 实例
x == y 等于 如果 x 等于 y,则返回 true 5==8 返回 false
x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true 5==="5" 返回 false
x != y 不等于 如果 x 不等于 y,则返回 true 5!=8 返回 true
x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true
x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!=="5" 返回 true
x > y 大于 如果 x 大于 y,则返回 true 5>8 返回 false
x < y 小于 如果 x 小于 y,则返回 true 5<8 返回 true
x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8 返回 false
x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8 返回 true

逻辑运算符

运算符 名称 描述 实例
x and y 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 and y > 1) 返回 true
x or y 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x6 or y5) 返回 true
x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true x=6 y=3 (x6 xor y3) 返回 false
x && y 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 && y > 1) 返回 true
x || y 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x5 || y5) 返回 false
! x 如果 x 不为 true,则返回 true x=6 y=3 !(x==y) 返回 true

数组运算符

运算符 名称 描述
x + y 集合 x 和 y 的集合
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

三元运算符(比目运算符)

(expr1) ? (expr2) : (expr3) 

运算符优先级

说明:左 = 从左到右,右 = 从右到左。

结合方向 运算符 附加信息
clone new clone 和 new
[ array()
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
instanceof 类型
! 逻辑运算符
* / % 算术运算符
+ – . 算术运算符和字符串运算符
<< >> 位运算符
== != === !== <> 比较运算符
& 位运算符和引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
? : 三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= => 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到

If...Else 语句

  • if 语句 - 在条件成立时执行代码
$t=date("H");
if ($t<"20")
{
    echo "Have a good day!";
}
  • if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
$t=date("H");
if ($t<"20")
{
    echo "Have a good day!";
}
else
{
    echo "Have a good night!";
}
  • if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
$t=date("H");
if ($t<"10")
{
    echo "Have a good morning!";
}
elseif ($t<"20")
{
    echo "Have a good day!";
}
else
{
    echo "Have a good night!";
}
  • switch 语句 - 在若干条件之一成立时执行一个代码块
$favcolor="red";
switch ($favcolor)
{
case "red":
    echo "你喜欢的颜色是红色!";
    break;
case "blue":
    echo "你喜欢的颜色是蓝色!";
    break;
case "green":
    echo "你喜欢的颜色是绿色!";
    break;
default:
    echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}

数组

在 PHP 中创建数组

array();

在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
  • 多维数组 - 包含一个或多个数组的数组

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

$cars=array("Volvo","BMW","Toyota");echo count($cars);

遍历数值数组

$cars=array("Volvo","BMW","Toyota");$arrlength=count($cars); for($x=0;$x<$arrlength;$x++){    echo $cars[$x];    echo "<br>";}

PHP 关联数组

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

或者

$age['Peter']="35";$age['Ben']="37";$age['Joe']="43";

遍历关联数组

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value){    echo "Key=" . $x . ", Value=" . $x_value;    echo "<br>";}

多维数组

一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组:

$cars = array(    array("Volvo",100,96),    array("BMW",60,59),    array("Toyota",110,100));

数组排序

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列
$cars=array("Volvo","BMW","Toyota");sort($cars);------------------------------------------------------    Array ( [0] => BMW [1] => Toyota [2] => Volvo )

超级全局变量

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。

PHP 超级全局变量列表:

  • $GLOBALS
    • $GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
    • $GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
$x = 75; $y = 25; function addition() {     $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; -------------------------------    100
  • $_SERVER
    • $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
echo $_SERVER['PHP_SELF'];echo "<br>";echo $_SERVER['SERVER_NAME'];echo "<br>";echo $_SERVER['HTTP_HOST'];echo "<br>";echo $_SERVER['HTTP_REFERER'];echo "<br>";echo $_SERVER['HTTP_USER_AGENT'];echo "<br>";echo $_SERVER['SCRIPT_NAME'];-----------------------------------------------------/try/demo_source/demo_global_server.phpwww.runoob.comwww.runoob.comhttps://www.runoob.com/try/showphp.php?filename=demo_global_serverMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36/try/demo_source/demo_global_server.php
  • $_REQUEST
    • PHP $_REQUEST 用于收集HTML表单提交的数据。
<html><body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">Name: <input type="text" name="fname"><input type="submit"></form> <?php $name = $_REQUEST['fname']; echo $name; ?> </body></html>-------------------------------------------------Name: 1 1
  • $_POST
    • PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
<html><body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">Name: <input type="text" name="fname"><input type="submit"></form> <?php $name = $_POST['fname']; echo $name; ?> </body></html>
  • $_GET
    • PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
    • $_GET 也可以收集URL中发送的数据。
<html><body><a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a></body></html>    <html><body> <?php echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];?> </body></html>
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

While循环

  • while - 只要指定的条件成立,则循环执行代码块
<html><body><?php$i=1;while($i<=5){    echo "The number is " . $i . "<br>";    $i++;}?></body></html>-------------------------------------------------------------The number is 1The number is 2The number is 3The number is 4The number is 5
  • do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
    • do...while 语句会至少执行一次代码,然后检查条件,只要条件成立,就会重复进行循环
<html><body><?php$i=1;do{    $i++;    echo "The number is " . $i . "<br>";}while ($i<=5);?></body></html>-----------------------------------------------------------The number is 2The number is 3The number is 4The number is 5The number is 6
  • for - 循环执行代码块指定的次数
    • for 循环用于您预先知道脚本需要运行的次数的情况。
    • 初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
    • 条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
    • 增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)
    • 上面的初始值增量参数可为空,或者有多个表达式(用逗号分隔)。
for ($i=1; $i<=5; $i++){    echo "数字为 " . $i . PHP_EOL;}----------------------------------------------------数字为 1数字为 2数字为 3数字为 4数字为 5
  • foreach - 根据数组中每个元素来循环代码块
    • 每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
    • 每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。
$x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");foreach ($x as $key => $value){    echo "key  为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;}---------------------------------------------key  为 1,对应的 value 为 Googlekey  为 2,对应的 value 为 Runoobkey  为 3,对应的 value 为 Taobao

函数

创建 PHP 函数

function add($x,$y){    $total=$x+$y;    return $total;} echo "1 + 16 = " . add(1,16);-------------------------------------1 + 16 = 17

魔术常量

___LINE

文件中的当前行号。

echo '这是第 " '  . __LINE__ . ' " 行';--------------------------------------------------这是第 “ 2 ” 行

_FILE

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

echo '该文件位于 " '  . __FILE__ . ' " ';------------------------------------------------------该文件位于 “ E:\wamp\www\test\index.php ”

_DIR

文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

echo '该文件位于 " '  . __DIR__ . ' " ';----------------------------------------------------该文件位于 “ E:\wamp\www\test ”

_FUNCTION

函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

function test() {    echo  '函数名为:' . __FUNCTION__ ;}test();--------------------------------------------------------------函数名为:test

_CLASS

类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。

class test {    function _print() {        echo '类名为:'  . __CLASS__ . "<br>";        echo  '函数名为:' . __FUNCTION__ ;    }}$t = new test();$t->_print();----------------------------------------------------------------------类名为:test函数名为:_print

_TRAIT

Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

class Base {    public function sayHello() {        echo 'Hello ';    }} trait SayWorld {    public function sayHello() {        parent::sayHello();        echo 'World!';    }} class MyHelloWorld extends Base {    use SayWorld;} $o = new MyHelloWorld();$o->sayHello();--------------------------------------------------------    Hello World!

_METHOD

类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

function test() {    echo  '函数名为:' . __METHOD__ ;}test();------------------------------------------------函数名为:test

NAMESPACE_

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

namespace MyProject; echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"---------------------------------------------------------------------命名空间为:"MyProject"

面向对象

对象的主要三个特性:

  • 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。
  • 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。
  • 对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。

面向对象内容

  • − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
  • 对象 − 是类的实例。
  • 成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。
  • 成员函数 − 定义在类的内部,可用于访问对象的数据。
  • 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
  • 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。
  • 子类 − 一个类继承其他类称为子类,也可称为派生类。
  • 多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
  • 重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
  • 抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
  • 封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
  • 构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
  • 析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
posted @ 2021-07-20 17:12  苏必胜666  阅读(70)  评论(0)    收藏  举报