跳至主要內容

PHP基础

Mr.Lexon大约 10 分钟back-end

PHP基础

#php

[toc]

本篇php基础更多的是个人文档,而并非是教程,用于日常查询语法所用。 php安装教程: [[php环境安装]]

0.环境安装

建议使用lamp或lnmp,因为一些依赖上的东西需要一个个打,所以,直接使用一键安装来迅速建立依赖环境不失为更好的选择,当然还是要根据具体的项目进行搭建环境。

lnmp:LNMP一键安装包 - CentOS/RadHat/Debian/Ubuntu下自动编译安装Nginx,PHP,MySQL,PHPMyAdminopen in new window

或者查看我的另一份基于docker的环境快速构建:环境构建

1.基础语法

1.1 开始

1.1.1 文件

php文件后缀为.php,文件开始为:<?php结束为: ?>在这个标签中编写的代码才被计算机认为是php代码,编写的代码才能被解析到,标签之外的文本可以被解析为html。

创建php变量为:

<?php
    $a = "waw";
	$b = 123;
	$c = 1.2;
	$d = [];

由此可见php为弱类型语言,定义时无需提前声明这个变量的类型是什么。

1.1.2 作用域

<?php
$x=5; // 全局变量

function myTest()
{
    $y=10; // 局部变量
    echo "<p>测试函数内变量:<p>";
    echo "变量 x 为: $x";
    echo "<br>";
    echo "变量 y 为: $y";
} 

myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>

php的全局变量和局部变量有着限制,全局的不能更改局部的,但是局部的可以更改全局的,局部提升至全局可以通过global关键字,但是不建议使用该关键字,定义变量因遵循:所有变量应是局部变量,全局只存在静态或动态函数,若需要使用配置,配置应该由函数出现。

1.1.3 打印语句

打印有echo,print,var_dump

<?php 
$txt1="学习 PHP"; 
$txt2="RUNOOB.COM"; 
$cars=array("Volvo","BMW","Toyota"); 
echo $txt1; 
var_dump("<br>"); 
print "在 $txt2 学习 PHP "; 
print_r("123456"); 
?>

echo关键字 直接打印字符串,可将打印的html标签转义 print关键字 直接打印字符串,可将打印的html标签转义 print_r() 函数用于打印变量,以更容易理解的形式展示。 var_dump() 函数用于打印变量,以更容易理解的形式展示,接收一个或对多个值(值不仅可以是字符串,也可以是其他任意类型)没有返回值。 echo可以输出一个或多个字符串,print只允许输出一个字符串,返回值总为 1

特殊字符: EOF 使用:

<?php  
echo <<<EOF  
        <h1>我的第一个标题</h1>  
        <p>我的第一个段落。</p>  
EOF;  
// 结束需要独立一行且前后不能空格  
?>

1.1.4 数据结构

PHP 变量存储不同的类型的数据,不同的数据类型可以做不一样的事情。 PHP 支持以下几种数据类型:

  • String(字符串)
  • Integer(整型)
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
  • Object(对象)
  • NULL(空值)
  • Resource(资源类型)

切记在尽可能的不要使用浮点数,出现浮点数时采用乘除去点法 在实际应用中只是尽可能与数据库操作时不要使用浮点数,容易造成精度丢失,但是在脚本内使用还是可以的

1.1.5 类型比较

<?php 
echo '0 == false: '; 
var_dump(0 == false); 
echo '0 === false: '; 
var_dump(0 === false);
echo PHP_EOL; 
echo '0 == null: '; 
var_dump(0 == null); 
echo '0 === null: '; 
var_dump(0 === null); 
echo PHP_EOL; 
echo 'false == null: '; 
var_dump(false == null); 
echo 'false === null: '; 
var_dump(false === null); 
echo PHP_EOL; 
echo '"0" == false: '; 
var_dump("0" == false); 
echo '"0" === false: '; 
var_dump("0" === false); 
echo PHP_EOL; 
echo '"0" == null: '; 
var_dump("0" == null); 
echo '"0" === null: '; 
var_dump("0" === null); 
echo PHP_EOL; 
echo '"" == false: '; 
var_dump("" == false); 
echo '"" === false: '; 
var_dump("" === false); 
echo PHP_EOL; 
echo '"" == null: '; 
var_dump("" == null); 
echo '"" === null: '; 
var_dump("" === null);

结果

0 == false: bool(true)
0 === false: bool(false)

0 == null: bool(true)
0 === null: bool(false)

false == null: bool(true)
false === null: bool(false)

"0" == false: bool(true)
"0" === false: bool(false)

"0" == null: bool(false)
"0" === null: bool(false)

"" == false: bool(true)
"" === false: bool(false)

"" == null: bool(true)
"" === null: bool(false)

1.1.6 常量

<?php // 区分大小写的常量名 
define("GREETING", "欢迎访问 Runoob.com"); 
echo GREETING; // 输出 "欢迎访问 Runoob.com" 
echo '<br>'; 
echo greeting; // 输出 "greeting",但是有警告信息,表示该常量未定义 
?>

常量一般用于配置化的东西,但是在业务流程当中不要定义常量,常量定义在工程初始化的时候。常量是全局变量。

1.1.7 字符串

<?php
$a = "123456"
//$a是字符串
$b = "789"
$c = $a.$b
//$c:123456789
$d = strlen($c)
//$d:9
$e = strpos($c,"78")
//$e:6

使用字符串时,要注意以下几点:

  1. 字符串使用"."来连接字符而不是"+"
  2. strlen()函数是计算字符串的字节长度,根据所给的字符集所决定,例如在gb2313下的汉字是2个字节长度,而在utf-8则是3个字节长度,所以在使用该函数时要注意当前所在的字符集。
  3. strpos()函数是输出查找文本在被查找出现的第一个位置

1.1.8 运算符

运算符名称描述实例结果
x + yx 和 y 的和2 + 24
x - yx 和 y 的差5 - 23
x * yx 和 y 的积5 * 210
x / yx 和 y 的商15 / 53
x % y模(除法的余数)x 除以 y 的余数5 % 21
-x设置负数取 x 的相反符号$x=2 echo -x-2
~x取反二进制取反方式
a.b并置连接两个字符串"A"."B"AB
运算符等同于描述
x = yx = y左操作数被设置为右侧表达式的值
x += yx = x + y
x -= yx = x - y
x * = yx = x * y
x /= yx = x / y
x %= yx = x % y模(除法的余数)
a .= ba = a . b连接两个字符串
运算符名称描述
++ x预递增x 加 1,然后返回 x
x ++后递增返回 x,然后 x 加 1
-- x预递减x 减 1,然后返回 x
x --后递减返回 x,然后 x 减 1
运算符名称描述实例
x == y等于如果 x 等于 y,则返回 true5==8 返回 false
x === y绝对等于如果 x 等于 y,且它们类型相同,则返回 true5==="5" 返回 false
x ! = y不等于如果 x 不等于 y,则返回 true5! =8 返回 true
x <> y不等于如果 x 不等于 y,则返回 true5<>8 返回 true
x! == y不绝对等于如果 x 不等于 y,或它们类型不相同,则返回 true5 =="5" 返回 true
运算符名称描述实例
----------------------------------------------------------------
x > y大于如果 x 大于 y,则返回 true5>8 返回 false
x < y小于如果 x 小于 y,则返回 true5<8 返回 true
x >= y大于等于如果 x 大于或者等于 y,则返回 true5>=8 返回 false
x <= y小于等于如果 x 小于或者等于 y,则返回 true5<=8 返回 true
运算符名称描述实例
x and y如果 x 和 y 都为 true,则返回 truex=6 y=3 (x < 10 and y > 1) 返回 true
x or y如果 x 和 y 至少有一个为 true,则返回 truex=6 y=3 (x 6 or y5) 返回 true
x xor y异或如果 x 和 y 有且仅有一个为 true,则返回 truex=6 y=3 (x6 xor y3) 返回 false
x && y如果 x 和 y 都为 true,则返回 truex=6 y=3 (x < 10 && y > 1) 返回 true
x || y如果 x 和 y 至少有一个为 true,则返回 truex=6 y=3 (x==5 |
! x如果 x 不为 true,则返回 truex=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
组合比较符(PHP7+)

PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。

语法格式如下:

$c = $a <=> $b;

解析如下:

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

1.1.9 if..else 和switch

暂时忽略,因为没有特殊的用法

1.2.0 数组

数组分为索引数组和键值数组

<?php
$a = [1,2,3]
$b = ["a"=>1,"b"=>2,"c"=>3]

这里的$a就是索引数组$b是键值数组 所有跟数组所做的操作见数组章

1.2.1 超级全局变量

<?php
$GLOBALS //超级全局变量组
$_SERVER //http请求报文信息
$_REQUEST //http请求信息
$_POST //httpPost方法请求体
$_GET //httpGet方法请求体
$_FILES //http表单上传文件方法请求体
$_ENV //服务端环境变量
$_COOKIE //服务端传输用cookie
$_SESSION //服务端session

1.2.2 for循环和while

PHP For 循环 | 菜鸟教程 (runoob.com)open in new windowPHP While 循环 | 菜鸟教程 (runoob.com)open in new window

1.2.3 函数

基础函数函数用法见: PHP 函数 | 菜鸟教程 (runoob.com)open in new window

1.2.4魔术常量

名称描述
__ LINE __文件中的当前行号。
__ FILE __文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__ DIR __文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
__ FUNCTION __函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__ CLASS __类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。注意自 PHP 5.4 起 __ CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__ CLASS__ 是调用 trait 方法的类的名字。
__ TRAIT __Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
__ METHOD __类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__ NAMESPACE __当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。

1.2.5 命名空间

见: PHP 命名空间(namespace) | 菜鸟教程 (runoob.com)open in new window

1.2.6 面对对象

见: PHP 面向对象 | 菜鸟教程 (runoob.com)open in new window

2.8.错误处理

菜鸟open in new window

2.9.异常处理

菜鸟open in new window

以上为php基础内容

上次编辑于:
贡献者: Lexon