PHP基本语法总结

目录

输出语句

注释

数据类型(变量)

局部和全局作用域

类型比较(松散比较与严格比较)

常量

运算符

并置运算符

不等于

逻辑运算符

条件语句

数组

关联数组

数组排序

一般数组

关联数组

循环

函数

变量函数

魔术常量

命名空间

超级全局变量

面向对象

构造与析构函数

继承

接口interface

常量

抽象类

static与final关键字

调用父类构造方法


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

<?php
// PHP 代码
?>

输出语句

PHP 中使用 echoprint 语句来输出数据。

echo 和 print 区别:

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

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

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

会输出Hello,World!

注释

PHP 支持三种注释方式:

单行注释:使用 //

单行注释:使用 # (较少使用)

多行注释:使用 /* */

<?php
// 这是一个单行注释
# 这也是一个单行注释
/*
这是一个多行注释
*/
?>

注释部分的代码不会被编译。

数据类型(变量)

变量是用于存储信息的"容器"

PHP 支持多种数据类型,包括但不限于:

字符串 (string):一系列字符。

整型 (integer):没有小数点的数字。

浮点型 (float):带有小数点的数字。

布尔型 (boolean):只有两个可能的值,true 和 false

数组 (array):存储多个值的集合。

对象 (object):面向对象编程中的实例。

NULL:表示一个未定义的变量。

PHP 中的变量总是以 $ 符号开始,后面跟着变量名。

<?php
$myVar = "Hello";
echo $myVar;
?>

会输出Hello。

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字(这一点与c语言不同)。

<?php
$x=5;
$y=10;function myTest()
{global $x,$y;$y=$x+$y;
}myTest();
echo $y; // 输出 15
?>

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

<?php
$x=5;
$y=10;function myTest()
{$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} myTest();
echo $y;
?>

这样写也是正确的。

类型比较(松散比较与严格比较)

松散比较:使用两个等号 == 比较,只比较值,不比较类型。

严格比较:用三个等号 === 比较,除了比较值,也比较类型。

例如,"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "FALSE" 是一个字符串。

42与“42”值相等(使用==返回true)类型不同(使用===返回false)

常量

PHP 中的常量是指一旦定义后其值不能被改变的标识符。

常量值被定义后,在脚本的其他任何地方都不能被改变。

常量可以用 define() 函数或 const 关键字来定义。

运算符

大部分与c语言相同,现列举几个c语言里没有的:

并置运算符

并置运算符 (.) 用于把两个字符串值连接起来。

例如:

<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>

上面的代码将输出:Hello world! What a nice day!

a .= b相当于a = a . b。

不等于

php里不等于可以使用与c语言相同的!=也可以使用x <> y,也表示不等于。

还有绝对等于x === y,如果 x 等于 y,且它们类型相同,则返回 true。

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

除了值相等以外,类也会判断是否相同。

逻辑运算符

与可以使用&&或者and,或可以使用||或者or。

还有异或符号x xor y,如果 x 和 y 有且仅有一个为 true,则返回 true。

条件语句

与c语言基本相同。elseif它的else与if中间不用空格。

if 语句 - 在条件成立时执行代码

if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码

if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块

switch 语句 - 在若干条件之一成立时执行一个代码块

if ($x > 0) {echo "正数";
} elseif ($x == 0) {echo "零";
} else {echo "负数";
}

数组

数组能够在单个变量中存储多个值:

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

同样类似于c语言。

运行结果为:I like Volvo, BMW and Toyota.

在 PHP 中,array() 函数用于创建数组

$cars=array("Volvo","BMW","Toyota");
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";

这两种赋值方式均可。

count($数组名);可以返回数组的长度。

关联数组

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

类似于c++里stl中的一些东西,构成了键值对。

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

运行结果为:Peter is 35 years old.

遍历关联数组使用foreach

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

运行结果为: 

Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

数组排序

一般数组

sort($数组名)

按照值升序排列。

rsort($数组名)

按照值降序排列。

关联数组

asort($数组名)

根据数组的值,对关联数组进行升序排列。

arsort($数组名)

根据数组的值,对关联数组进行降序排列。 

ksort($数组名)

根据数组的键,对关联数组进行升序排列。

krsort($数组名) 

根据数组的键,对关联数组进行降序排列。

循环

while,do while,for循环与c语言一致。

唯一要注意foreach循环。foreach 循环用于遍历数组。

foreach ($array as $value)
{要执行代码;
}

每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

foreach ($array as $key => $value)
{要执行代码;
}

每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值。

<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{echo $value . PHP_EOL;
}
?>

运行结果为: 

Google
Runoob
Taobao

函数

语法:

<?php
function functionName()
{// 要执行的代码
}
?>

和JavaScript很相似,以function开头表示这是一个函数后面跟着它的名字。

其它与c语言类似,有可以有传入值,通过return返回值。

变量函数

变量函数是指在 PHP 中,将一个变量作为函数名来调用的函数。

$func = 'foo';
$func();        // 调用 foo()函数$func = 'bar';
$func('test');  // 调用 bar()函数$func = 'echoit';
$func('test');  // 调用 echoit()函数

魔术常量

__LINE__用于显示文件中的当前行号。

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

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

__FUNCTION__在函数类返回该函数被定义时的名字(区分大小写)。

__CLASS__在类里面返回该类被定义时的名字(区分大小写)。

__TRAIT__实现代码复用,优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

__METHOD__显示类的方法名,返回该方法被定义时的名字(区分大小写)。

__NAMESPACE__得到当前命名空间的名称(区分大小写)。

命名空间

用来解决重名问题。

默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。

命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。

<?php  
// 定义代码在 'MyProject' 命名空间中  
namespace MyProject;  // ... 代码 ...  

同一个文件中可以有不同的命名空间。建议使用大括号括起来。

<?php
namespace MyProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */  }
}namespace AnotherProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */  }
}
?>

超级全局变量

$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。

 $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 

相当于z = x + y。

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。具体查每样信息的语法可以百度查询。

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>

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>

PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。

面向对象

 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。

对象 − 是类的实例。

成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可成为对象的属性。

成员函数 − 定义在类的内部,可用于访问对象的数据。

继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。

子类 − 一个类继承其他类称为子类,也可称为派生类。

多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。

抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。

封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。

构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。

析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

使用new运算符创建对象。

$runoob = new Site;
$taobao = new Site;
$google = new Site;

构造与析构函数

在c++中构造函数与类同名,析构函数是构造函数名前加上一个~,但在php里构造函数与析构函数有固定的名字:

__construct与__destruct

构造函数:

function __construct( $par1, $par2 ) {$this->url = $par1;$this->title = $par2;
}

析构函数:

 function __destruct() {print "销毁 " . $this->name . "\n";}

继承

继承使用extends,php不支持多继承。

class Child extends Parent {// 代码部分
}

方法重写和访问权限基本与c++相同,不多赘述。 

接口interface

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有,这是接口的特性。

要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

<?php// 声明一个'iTemplate'接口
interface iTemplate
{public function setVariable($name, $var);public function getHtml($template);
}// 实现接口
class Template implements iTemplate
{private $vars = array();public function setVariable($name, $var){$this->vars[$name] = $var;}public function getHtml($template){foreach($this->vars as $name => $value) {$template = str_replace('{' . $name . '}', $value, $template);}return $template;}
}

常量

可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。

 const constant = '常量值';

抽象类

任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。

定义为抽象的类不能被实例化。

类似于多态。

<?php
abstract class AbstractClass
{// 强制要求子类定义这些方法abstract protected function getValue();abstract protected function prefixValue($prefix);// 普通方法(非抽象方法)public function printOut() {print $this->getValue() . PHP_EOL;}
}class ConcreteClass1 extends AbstractClass
{protected function getValue() {return "ConcreteClass1";}public function prefixValue($prefix) {return "{$prefix}ConcreteClass1";}
}class ConcreteClass2 extends AbstractClass
{public function getValue() {return "ConcreteClass2";}public function prefixValue($prefix) {return "{$prefix}ConcreteClass2";}
}$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') . PHP_EOL;$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') . PHP_EOL;
?>

static与final关键字

声明类属性或方法为 static(静态),就可以不实例化类而直接访问。静态属性不可以由对象通过 -> 操作符来访问。

  public static $my_static = 'foo';

如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

调用父类构造方法

PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。

java里使用的是super,php使用用parent。

 parent::__construct(); 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440340.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode讲解篇之695. 岛屿的最大面积

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历二维矩阵&#xff0c;如果当前格子的元素为1进行深度优先搜索&#xff0c;将搜索过的格子置为0&#xff0c;防止重复访问&#xff0c;然后对继续深度优先搜索上下左右中为1的格子 题解代码 func maxAr…

Redis实现每日签到(大数据量)

PHP语言使用Redis NoSQL服务器二进制数据类型实现大数据情况下签到功能 目录 问题 解决方式 封装签到类 功能调用 总结 问题 实现用户每日签到功能不难&#xff0c;但随着用户量上升之后&#xff0c;不论是存储还是判断对数据量来说都很麻烦&#xff1b;假如每天有100万用…

探索Spring Boot:实现“衣依”服装电商平台

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

通过 LLMs 自动探索量化投资策略

作者&#xff1a;老余捞鱼 原创不易&#xff0c;转载请标明出处及原作者。 写在前面的话&#xff1a; 本文提出了一个利用大型语言模型&#xff08;LLMs&#xff09;和多代理架构的新框架&#xff0c;用于量化股票投资和投资组合管理。该框架通过整合LLMs生成多样化的al…

【Unity】unity安卓打包参数(个人复习向/有不足之处欢迎指出/侵删)

1.Texture Compression 纹理压缩 设置发布后的纹理压缩格式 Use Player Settings:使用在播放器设置中设置的纹理压缩格式 ETC&#xff1a;使用ETC格式&#xff08;兼容&#xff09; ETC2&#xff1a;使用ETC2格式&#xff08;很多设备不支持&#xff09; ASTC&#xff1a;使用…

TypeScript:装饰器

一、简介 随着TypeScript和ES6里引入了类&#xff0c;在一些场景下我们需要额外的特性来支持标注或修改类及其成员。 装饰器&#xff08;Decorators&#xff09;为我们在类的声明及成员上通过元编程语法添加标注提供了一种方式。 Javascript里的装饰器目前处在 建议征集的第二阶…

Hadoop大数据入门——Hive-SQL语法大全

Hive SQL 语法大全 基于语法描述说明 CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION] path; SELECT expr, ... FROM tbl ORDER BY col_name [ASC | DESC] (A | B | C)如上语法&#xff0c;在语法描述中出现&#xff1a; []&#xff0c;表示可选&#xff0c;如上[LOCATI…

大模型项目如何判断用RAG还是微调

大模型项目如何判断用RAG还是微调 在大模型项目中&#xff0c;选择使用检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;还是微调&#xff08;Fine-Tuning&#xff09;取决于多个因素&#xff0c;包括项目的具体需求、数据的可用性、性能要求、成本和…

浅谈汽车智能座舱如何实现多通道音频

一、引言 随着汽车智能座舱的功能迭代发展&#xff0c;传统的 4 通道、6 通道、8 通道等音响系统难以在满足驾驶场景的需求&#xff0c;未来对于智能座舱音频质量和通道数会越来越高。接下来本文将浅析目前智能座舱如何实现音频功放&#xff0c;以及如何实现多路音频功放方案。…

CSS基础-常见属性(二)

6、CSS三大特性 6.1 层叠性 如果样式发生冲突&#xff0c;则按照优先级进行覆盖。 6.2 继承性 元素自动继承其父元素、祖先元素所设置的某些元素&#xff0c;优先继承较近的元素。 6.3 优先级 6.3.1 简单分级 1、内联样式2、ID选择器3、类选择器/属性选择器4、标签名选择器/…

环境对于写作有何影响?

如果你是有灵性、热爱文学创作的人&#xff0c;多半就会喜欢安静的生活环境。因为你会感受到唯有在这样的环境里更才能够沉下心来思考创作的路径。而且此时的你&#xff0c;显得头脑清醒、思维活跃而自由&#xff0c;因之文思泉涌。 网络图&#xff1a;宁静的书房 反之&#x…

【数据结构】什么是平衡二叉搜索树(AVL Tree)?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;AVL树的概念 &#x1f4cc;AVL树的操作 &#x1f38f;AVL树的插入操作 ↩️右单旋 ↩️↪️右左双旋 ↪️↩️左右双旋 ↪️左单旋 &#x1f38f;AVL树的删…

SpringBoot驱动的明星周边产品电商解决方案

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

什么是 ARP 欺骗和缓存中毒攻击?

如果您熟悉蒙面歌王&#xff0c;您就会明白蒙面歌王的概念&#xff1a;有人伪装成别人。然后&#xff0c;当面具掉下来时&#xff0c;您会大吃一惊&#xff0c;知道了这位名人是谁。类似的事情也发生在 ARP 欺骗攻击中&#xff0c;只是令人惊讶的是&#xff0c;威胁行为者利用他…

网站集群批量管理-密钥认证与Ansible模块

一、集群批量管理-密钥认证 1、概述 管理更加轻松&#xff1a;两个节点,通过密钥形式进行访问,不需要输入密码,仅支持单向. 服务要求(应用场景)&#xff1a; 一些服务在使用前要求我们做秘钥认证.手动写批量管理脚本. 名字: 密钥认证,免密码登录,双机互信. 2、原理 税钥对…

PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站

1、PyGWalker应用: 在数据分析的过程中,数据的探索和可视化是至关重要的环节,如何高效地将分析结果展示给团队、客户,甚至是公众,是很多数据分析师和开发者面临的挑战,接下来介绍的两大工具组合——PyGWalker与Streamlit,可以帮助用户轻松解决这个问题,即使没有复杂的代…

VMware ESXi 7.0U3q macOS Unlocker OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发布

VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 Dell HPE 联想定制版 9 月更新发布 VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 7.0U3 标准版&#xff0c;Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)…

五、存储引擎

文章目录 1. 查看存储引擎2. 设置系统默认的存储引擎3. 设置表的存储引擎3.1 创建表时指定存储引擎3.2 修改表的存储引擎4. 引擎介绍4.1 InnoDB 引擎:具备外键支持功能的事务存储引擎4.2 MyISAM 引擎:主要的非事务处理存储引擎5. MyISAM和InnoDB6. 阿里巴巴、淘宝用哪个课外补…

根据给定的相机和镜头参数,估算相机的内参。

1. 相机分辨率和传感器尺寸 最高分辨率&#xff1a;6000 4000 像素传感器尺寸&#xff1a;22.3 mm 14.9 mm 2. 计算像素大小 需要计算每个像素对应的实际尺寸&#xff08;mm/pixel&#xff09;&#xff1a; 水平方向像素大小&#xff1a; 垂直方向像素大小&#xff1a; …

Ambari搭建Hadoop集群 — — 问题总结

Ambari搭建Hadoop集群 — — 问题总结 一、部署教程&#xff1a; 参考链接&#xff1a;基于Ambari搭建大数据分析平台-CSDN博客 二、问题总结&#xff1a; 1. VMwear Workstation 查看网关 2. 资源分配 参考&#xff1a; 硬盘&#xff1a;master&#xff08;29 GB&#xff…