array() 创建数组:

  1、数值数组:带数字 ID 键的数组

  2、关联数组:带有指定键的数组,键关联一个值

  3、多维数组:包含一个或多个数组的数组

$arr = array("Hello", "World");    // 数值数组
$age = array("Peter" => "35", "Ben" => "37"); // 关联数组
echo $age["Peter"]; //

数组方法:

  1、count($arr):获取长度

  2、foreach($array as $value):遍历数组

$arr = array(1, 2, 3, 4, 5);
echo count($arr).PHP_EOL; // 输出长度 5
foreach ($arr as $num) // 依次输出数组中的元素
echo "$num".PHP_EOL;

  3、sort($arr)、rsort($arr):对数组进行升序、降序排序

$arr = array(6, 7, 1, 4, 5);
sort($arr); // 升序排列
foreach ($arr as $num)
echo $num.PHP_EOL;
rsort($arr); // 降序排列
foreach ($arr as $num)
echo $num.PHP_EOL;

  4、asort($arr)、arsort($arr):根据关联数组的值进行升序、降序排序

$arr = array("1" => 3, "2" => 2, "3" => 1);
asort($arr);
foreach ($arr as $a) // 1 2 3
echo $a.PHP_EOL;
arsort($arr);
foreach ($arr as $a) // 3 2 1
echo $a.PHP_EOL;

  5、ksort($arr)、krsort($arr):根据关联数组的键进行升序、降序排序

$arr = array("1" => 3, "2" => 2, "3" => 1);
ksort($arr);
foreach ($arr as $a) // 3 2 1
echo $a.PHP_EOL;
krsort($arr);
foreach ($arr as $a) // 1 2 3
echo $a.PHP_EOL;

超级全局变量:

  1、$GLOBALS:包含了全部变量的全局组合数组,变量名就是数组的键

  2、$_SERVER:一个包含诸如头信息、路径以及脚本位置等信息的数组

$x = 15;
function test() {
$GLOBALS["x"] = 5;
}
test();
echo $x.PHP_EOL; //
echo $_SERVER["PHP_SELF"]; // 当前执行脚本文件名

  3、$_REQUEST:用于收集 HTML 表单提交的数据

  4、$_POST:广泛用于收集表单数据,在 HTML 的 form 标签指定 post

  5、$_GET:广泛用于收集表单数据,表单属性为 "method = get"

类:

  1、使用 class 关键字后加上类名定义

  2、类名后用一对大括号在里面定义变量和方法

  3、类的变量使用 var  来声明,变量也可以初始化值

  4、函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化对象访问

  5、变量 $this 代表自身对象,PHP_EOL 为换行符

  6、使用 new 来实例化一个类对象

  7、构造函数:function __construct([mixed $args[, $...]])

  8、析构函数:function __destruct(void)

  9、使用 extends 来继承一个类,PHP 不支持多继承

  10、我们可以把从父类继承来的方法进行改写,以满足子类需求

  11、我们可以在属性或方法面前加上访问控制的关键字来实现访问控制,默认为 public

  12、PHP 不会在子类的构造方法中自动调用父类的构造方法

  13、若要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct()

  14、若子类没定义构造方法,则会继承父类的

class Greeter {
var $name;
function __construct($your_name) {
$this->$name = $your_name;
echo "<p>In Greeter</p>";
}
function say() {
return "Hello ".$this->$name."!";
}
}
$greet = new Greeter("Lemon"); // In Greeter
echo $greet->say(); // Hello Lemon!
class Say extends Greeter {
function __construct() {
echo "<p>In Say</p>";
parent::__construct("Yam");
}
}
$say = new Say(); // In Say In Greeter
echo $say->say(); // Hello Yam!

注:自 PHP5.3.0 起,可用一个变量来动态调用类,但变量值不能为关键字

  可把类中始终不变的值定义为常量,常量必须是一个定值,定义及使用时不需使用 $

接口:

  1、使用 interface 来定义接口(指定某个类需要实现哪些方法,但不需要定义它们)

  2、所有的方法必须公有

  3、使用 implements 来实现接口中的所有方法,可实现多个接口,接口间用逗号隔开

interface test {
public function get_name();
public function set_name($name);
}
class information implements test {
var $name;
function __construct($your_name) {
$this->$name = $your_name;
}
// 若下面的方法有一个没实现则会报错
function get_name() {
return $this->$name;
}
function set_name($your_name) {
$this->$name = $your_name;
}
}
$info = new information("Lemon");
echo $info->get_name().PHP_EOL; // Lemon
$info->set_name("Yam");
echo $info->get_name(); // Yam

抽象类:

  1、任何一个类,如果里面至少有一个方法是抽象的,则该类必须为抽象的

  2、抽像类不能被实例化(abstract)

  3、继承一个抽象类时,子类必须定义抽象父类的所有抽象方法,且访问控制必须和父类一样或更宽松

abstract class AbstractClass
{
// 强制要求子类定义这些方法
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 普通方法(非抽象方法)
public function printOut() {
print $this->getValue() . PHP_EOL;
}
}
class ConcreteClass extends AbstractClass
{
protected function getValue() {
return "ConcreteClass";
}
// 比原来更加宽松
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass";
}
}
$class1 = new ConcreteClass;
$class1->printOut();
echo $class1->prefixValue('FOO_') . PHP_EOL;

static 关键字:

  1、声明类属性或方法为 static 就可以不实例化而直接访问

  2、静态属性不能通过一个类已实例化的对象来访问,但静态方法可以

  3、由于静态方法不需要通过对象即可调用,所以伪变量 $this 不可用

  4、静态方法不可以由对象通过 -> 操作符来访问

class Test {
public static $num = 1;
public function add_num() {
echo ++self::$num.PHP_EOL;
}
}
echo Test::$num.PHP_EOL; //
$test = new Test();
$test->add_num(); //
$test->add_num(); //
$test = new Test();
$test->add_num(); // 

final 关键字:

  1、若父类中的方法被声明为 final,则子类无法覆盖该方法

  2、若一个类被声明为 final,则不能被继承

PHP 部分语法(二)的更多相关文章

  1. PHP语法(二):数据类型、运算符和函数

    相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 这次整理了PHP的数据类型.运算符和函数. ...

  2. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  3. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  4. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  5. CodeSmith 基本语法(二)

    CodeSmith之四 - 典型实例(四) CodeSmith API文档 (三) CodeSmith 基本语法(二) CodeSmith 图形界面基本操作(一) CodeSmith的C#语法与Asp ...

  6. Pocket英语语法---二、指示代词和不定代词是什么

    Pocket英语语法---二.指示代词和不定代词是什么 一.总结 一句话总结: 指示代词:标识人或事物的代词,用来代替前面已提到过的名词 this.these.that.those不定代词:指代不确定 ...

  7. Vue模板语法(二)

    Vue模板语法(二) 样式绑定  class绑定 使用方式:v-bind:class="expression" expression的类型:字符串.数组.对象 1.2 style绑 ...

  8. Shell系列(36)- for循环语法二简介及批量添加删除用户

    for循环语法二 for ((初始值;循环控制条件;变量变化)) do 程序 done 例子 例子-1 求和工具 需求:根据用户输入的数字,求1~输入所有数字的和 脚本: #!/bin/bash re ...

  9. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  10. ios -- 教你如何轻松学习Swift语法(二)

    前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦.      一.可选类型(重点内容)   1.什么是可选类型?        1.1在OC开 ...

随机推荐

  1. IoT缺德相关

    https://github.com/nebgnahz/awesome-iot-hacks <揭秘家用路由器0day漏洞挖掘技术> Embedded Device Security: Pw ...

  2. spingboot 2.1.3 与 elasticsearch7 兼容问题

    pom 加入 elasticsearch7  的依赖, <dependency> <groupId>org.elasticsearch</groupId> < ...

  3. Java 8——重复注解和注解的作用范围的扩大化

    一.重复注解 在某些情况下,希望将相同的注解应用于声明或类型用途.从Java SE 8发行版开始,重复注解使可以执行此操作. 例如,正在编写代码以使用计时器服务,该服务使能够在给定时间或某个计划上运行 ...

  4. .Net Core 项目发布到Linux - CentOS 7(一)

    由于项目的需求,需要发布到Linux服务器上,在这里记录一下我发布的过程. 安装Linux 安装liunx系统很简单,网上也有很多教程,我是直接使用阿里云的CentOS 7.7 64位 部署环境 Li ...

  5. nltk的安装和简单使用

    使用python进行自然语言处理,有一些第三方库供大家使用: ·NLTK(Python自然语言工具包)用于诸如标记化.词形还原.词干化.解析.POS标注等任务.该库具有几乎所有NLP任务的工具. ·S ...

  6. PHP服务化搭建之nginx动静分离实战

    如有什么问题可以加群交流:647617935 什么是动静分离 动静分离:将项目中的CSS,JS,HTML,JPG'.等静态资源和 PHP等动态资源分开处理的一种方式 动静分离优点 不同的文件由不同类型 ...

  7. Android TeaPickerView数据级联选择器

    数据级联选择器.三级联动.二级联动.层级联动.多数据筛选.必藏 (Data Cascade Selector, Hierarchical Structure, Multiple Data Screen ...

  8. MQ脚本回放报错2059

    1.响应2059错误 1.1.   涉及协议 MQ,调试回放阶段 1.2.   错误信息 完成码2原因为2059:未能为 '10.200.100.75:QMEMBFE' 创建 MQQueueManag ...

  9. java基础 - 什么是hashmap的负载因子,hashmap的容量(即桶个数)为什么是2的幂次

    HashMap的负载因子是指,比如容量为16,负载因子为0.75,则当HashMap的元素个数达到16*0.75=12时,触发扩容.(16和0.75是初始默认的容量和负载因子). HashMap的容量 ...

  10. 菜鸟刷面试题(三、Redis篇)

    目录: redis是什么?都有哪些使用场景? redis有哪些功能? redis和memecache有什么区别? redis为什么是单线程的? 什么是缓存穿透?怎么解决? redis支持的数据类型有哪 ...