PHP 是后端脚本语言,回顾一下:

1.1 PHP 数组:

 <?php
$user = array(); // 定义一个数组
$user[0] = 'zhangsan'; // 给数组赋值
$user[2] = 'lizi'; // 给数组赋值
echo count($user).'<br>'; //输出数组中元素的个数
print_r( $user ); // 打印数组的详细项目
?>

运行结果:

1.2 数组输出乱码:

<?php
$user = array(); // 定义一个数组
//[] 是在该数组 最大的数字索引上+1
$user[] = 'zhangsan';
$user[8] = '李四';
$user[] = '王明';
$user[] = '张三';
$user[] = '毛小芳';
$user[] = 'wangwu';
echo count($user).'<br>';
print_r( $user );
?>

1.3 在PHP文件开头加入header("Content-type: text/html; charset=utf-8");

<?php
header("Content-type: text/html; charset=utf-8");
$user = array(); // 定义一个数组
//[] 是在该数组 最大的数字索引上+1
$user[] = 'zhangsan';
$user[8] = '李四';
$user[] = '王明';
$user[] = '张三';
$user[] = '毛小芳';
$user[] = 'wangwu';
echo count($user).'<br>';
print_r( $user );
?>

乱码变OK了:

1.4  array_keys() 获取数组的键的数组(这里有点类似js中Object.keys() 获取对象的键的数组),array_values()获取数组的值组成的数组

implode(): 把数组链接成字符串:语法implode(separator,array);

separator  可选,规定在数组元素之间放置的内容;如果没有separator 则默认是""(空字符串)

explode():把字符串分隔,然后组合成数组:语法explode(separator,string,limit) ;

separator 必须,规定在哪里分隔字符串

string必须,需要分隔的字符串

limit 可选,规定返回的数组的最大数量

 <?php
header("Content-type: text/html; charset=utf-8");
$user = array(
'title' => '星星',
'content' => '恒星',
'age' => '25亿万年'
);
$keys = array_keys( $user );
print_r( $keys );
//implode--->join (在js中用join进行链接) implode 把数组以','为分隔符链接成字符串;格式 implode(separator,array);
// explode 把字符串分隔成数组,格式 explode(separator,string,limit)
echo implode( ",", $keys )."<br>";
$values = array_values( $user );
print_r( $values );
echo implode( "','", $values )."<br>";
?>

运行结果:

1.5 遍历数组:

 <?php
header("Content-type: text/html; charset=utf-8");
$userList = array(
0 => array(
'张三',
'李四',
),
1 => array(
'小星星',
'小强强'
)
);
// 这里的foreach 类似js中的forEach()以及for(var i in obj)
foreach( $userList as $k => $v ){
echo $k . '--->' . $v[0] . '--->' . $v[1] . '<br/>';
}
echo "<br>"."--------------这里是分割符------------------"."<br>"."<br>";
foreach( $userList as $k => $v ){
// echo $k . '--->';
echo $k;
foreach( $v as $k2 => $v2 ){
echo '---->' . $v2;
}
echo '<br/>';
}
?>

运行结果:

1.5.2 foreach遍历:

格式:foreach($arr as $key => $value) ,也可以简写为for($arr as $value) 省略$key

 <?php
header("Content-type: text/html; charset=utf-8");
$arr = array(
0 => 1,
3 => 10,
5 => 100
); foreach( $arr as $key => $val ){
echo $key . '-->' . $val . '<br/>';
} foreach( $arr as $val ){
echo $val . '<br/>';
}
?>

1.5.3 for循环,缺点是不能遍历不连续的数字索引,或者字符串索引

 <?php
header("Content-type: text/html; charset=utf-8");
$arr = array(
0 => 1,
3 => 10,
5 => 100
); echo '数组的长度是:'.count($arr).'<br>'; //3 //$i---> 0, 1, 2
//for循环的缺点:不能遍历 不连续的数字索引 和 字符串索引
for( $i = 0; $i < count( $arr ); $i++ ){
// $arr[0] $arr[1] $arr[2]
echo $arr[$i] . '<br/>';
} ?>

2. 创建一个类

 <?php
/*
定义一个类:格式如下
class 类名称 { }
类是由n个属性和方法组成的
*/ header("Content-type: text/html; charset=utf-8");
class MobilePone{
public $cpu ='麒麟970';
public $memory = "640G";
public function favarit(){
echo '上网';
}
public function play(){
echo '神秘星球';
}
public function pragram(){
echo '编程网页';
}
}
// 调用:想要调用,首先需要进行实例化 ,这里和js有点类似,在js中,构造函数的调用,也需要进行实例化,然后才能调用
// 实例化对象:对象名 = new 类名()
$shili = new MobilePone();
// 然后是调用
// 调用方法:对象->方法名
$shili->play();
echo '<br>'; // 这里是换行
$shili->favarit();
echo '<br>'; // 这里是换行
$shili->pragram();
echo '<br>';
//调用属性: 对象->属性名称[注意,属性名前面不需要美元符号]
echo $shili->cpu;
echo '<br>';
echo $shili->memory;
?>

运行结果:

2.2 类中的修饰符(权限控制符)

 <?php
//Object.defineProperty
header("Content-type: text/html; charset=utf-8");
class Computer {
//public: 属性修饰符: 用来控制 属性/方法 的访问权限
/*
常见的属性修饰符用3个:
public( 公共的 )
protected: 受保护的( 继承里面讲 )
private: 私有的
*/ //类的外面: 类的定义中 {} 的外面
//类的里面: 类的定义中 {} 的里面
public $keyboard = '键盘'; //public: 在类的外面 和 类的里面 都能够访问
public $mouse = '鼠标';
private $cpu = '64核 麒麟975'; //private: 只能在类的内部才能访问
public function showInfo(){
//this: 哪个对象调用我,我就指向谁
// '.'号:在php中,用于字符串的链接,相当于js中的'+'号
echo $this->cpu . '--->' . $this->mouse . '--->' . $this->keyboard;
}
}
$c = new Computer();
$c->showInfo();
?>

2.3 在类外是不能够访问私有属性的(即private 作为修饰符的部分,只能在类内部访问)

 <?php
//Object.defineProperty
header("Content-type: text/html; charset=utf-8");
class Computer {
//public: 属性修饰符: 用来控制 属性/方法 的访问权限
/*
常见的属性修饰符用3个:
public( 公共的 )
protected: 受保护的( 继承里面讲 )
private: 私有的
*/ //类的外面: 类的定义中 {} 的外面
//类的里面: 类的定义中 {} 的里面
public $keyboard = '键盘'; //public: 在类的外面 和 类的里面 都能够访问
public $mouse = '鼠标';
private $cpu = '64核 麒麟975'; //private: 只能在类的内部才能访问 public function showInfo(){
//this: 哪个对象调用我,我就指向谁
// '.'号:在php中,用于字符串的链接,相当于js中的'+'号
echo $this->cpu . '--->' . $this->mouse . '--->' . $this->keyboard.'<br>';
}
} $c = new Computer();
$c->showInfo(); echo $c->keyboard.'<br>';
echo $c->mouse.'<br>';
echo $c->cpu.'<br>'; //报错, 在类的外面 不能访问私有的属性 ?>

2.4  类外也不能访问受保护的属性(即用protected 修饰的属性)

 <?php
//Object.defineProperty
header("Content-type: text/html; charset=utf-8");
class Computer {
//public: 属性修饰符: 用来控制 属性/方法 的访问权限
/*
常见的属性修饰符用3个:
public( 公共的 )
protected: 受保护的( 继承里面讲 )
private: 私有的
*/ //类的外面: 类的定义中 {} 的外面
//类的里面: 类的定义中 {} 的里面
public $keyboard = '键盘'; //public: 在类的外面 和 类的里面 都能够访问
public $mouse = '鼠标';
private $cpu = '64核 麒麟975'; //private: 只能在类的内部才能访问
protected $aaa = '这是受保护的属性';
public function showInfo(){
//this: 哪个对象调用我,我就指向谁
// '.'号:在php中,用于字符串的链接,相当于js中的'+'号
echo $this->cpu . '--->' . $this->mouse . '--->' . $this->keyboard.'--->'.$this->aaa.'<br>';
}
}
$c = new Computer();
$c->showInfo(); echo $c->keyboard.'<br>';
echo $c->mouse.'<br>';
echo $c->aaa.'<br>';//报错, 在类的外面 不能访问受保护的属性 ?>

3. 构造函数 __construct():函数在实例化的时候,就会调用构造函数

<?php
/*
构造函数:
1, 定义的时候, 他的函数名 __construct
php4 构造函数名是跟类同名
2, 构造函数 不需要手动去调用, 自动被调用
3, 当对象实例化的时候, 构造函数会被自动调用
*/
header("Content-type: text/html; charset=utf-8");
class Person{
public $name;
public $sex;
public function __construct($n,$s){
echo '如果此段文字被输出了,说明实例化类的时候会调用__construct()函数'.'<br>';
$this->name = $n;
$this->sex = $s;
}
}
$p1 = new Person('huanying2015','man');
$p2 = new Person('aluoha','man');
?>

4. 继承:

继承1:父类所有的public修饰的属性和方法;继承2:父类所有的protected 修饰的属性和方法

类的继承格式:

class 类名  extends 父类名{}

<?php
header("Content-type: text/html; charset=utf-8");
class Person {
public $name;
public $age; public function __construct( $n, $a ){
$this->name = $n;
$this->age = $a;
echo '父类实例化'.'<br>';
} public function speak(){
echo '说话<br/>'.'<br>';
} protected function eat(){
echo '吃饭<br/>'.'<br>';
} private function waimao (){
echo '长相<br/>'.'<br>';
}
} //class 类名 extends 父类名
/*
继承 到底 继承了什么?
1,父类所有的public的属性和方法
2, 父类所有的protected的属性和方法
3, private的属性和方法 不会继承过来 public: 类内,类外,子类 可以访问
protected: 类内,子类 可以访问
private: 类内 可以访问 */
class Student extends Person{
public $No;
// 扩展构造函数
// public function __construct($n,$a,$no){
// echo '子类实例化'.'<br>';
// //parent:父类
// parent::__construct($n,$a); // 调用父类的方法:构造函数
// $this->No = $no; // 把自己扩展的属性也加上去,这样自己的构造函数就完整了
// }
// 也可以重写构造函数
public function __construct($n,$a,$no){
echo '子类实例化'.'<br>';
$this->name = $n;
$this->age = $a;
$this->No = $no;
}
// 如果不满意父类的方法,可以重写父类的方法,改写完成后,对父类不会造成影响
public function speak(){
echo '我是一名学生,说的是学生话'.'<br>';
}
// 父类没有的类,可以在这里进行扩展,添加新类
public function test(){
echo '我的学号是:'.$this->No.'学生正在考试'.'<br>'; $this->eat(); //protected 修饰的方法:能够被子类继承,所以此处可以被访问
$this->waimao(); //pravite 修饰的方法:不能够被子类继承,所以此处是访问不到的,会报错
} } $p = new Person( '周星星', 23 ); // 父类实例化
$p->speak(); // 父类方法调用 $stu = new Student('光头强', 22, '2342343' ); // 子类实例化
$stu->speak(); // 子类方法调用,这里是调用重写后的方法
$stu->test(); // 子类调用扩展的方法 ?>

小结:修饰符的说明:

public:类外可以调用,类内可以调用,可以继承

protected:类外不可以调用,类内可以调用,可以继承

private:类外不可以调用,类内可以调用,不可以继承

php初级之数组与 类初级的更多相关文章

  1. 我的PHP之旅--数组的认识(初级)

    数组 PHP的数组与swift有些许不同,分为3类(初级,以后会涉及到多维数组和数组指针等). 枚举数组 关联数组 混合数组 枚举数组 枚举数组跟swift中的数组差不多: <?php $arr ...

  2. LeetCode初级算法--数组01:只出现一次的数字

    LeetCode初级算法--数组01:只出现一次的数字 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...

  3. LeetCode初级算法--数组02:旋转数组

    LeetCode初级算法--数组02:旋转数组 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/ ...

  4. 图解Python 【第五篇】:面向对象-类-初级基础篇

    由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节主要讲基础和面向对象的特性 本节内容一览图: 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 ...

  5. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  6. 数组工具类 - ArrayUtil.java

    数组工具类,提供数组.对象之间转换的方法. 源码如下:(点击下载 - ArrayUtil.java .commons-lang-2.6.jar) import java.lang.reflect.Ar ...

  7. java数组 数组工具类Arrays

    一.数组 1.java有严格的数据类型限制,一个数组只能声明一个数据类型,存放同一种数据类型. 2.虽然只能存放一种数据类型,假设A , 如果数据类型B 继承A,依然能存放进入数组. 3.数组的初始化 ...

  8. java - day005 - 数组工具类, 数组复制,二维数组,变量,方法, 面向对象

    1. java.util.Arrays  数组工具类    Arrays.toString (数组) 数组值链接字符串 Arrays.sort(数组) 基本类型: 优化的快速排序 引用类型: 优化的合 ...

  9. Yii2 数组助手类arrayHelper

    数组助手类 ArrayHelper 1.什么是数组助手类 Yii 数组助手类提供了额外的静态方法,让你更高效的处理数组. a.获取值(getValue) class User { public $na ...

随机推荐

  1. 协议无关组播--稀疏模式 PIM-SM

    一. 1)PIM-SM 1.PIM-SM转发.加入 PIM-SM适合于接收成员较少的环境.它与DM有何显著的区别?先看PIM-SM转发机制. 转发: 当组播数据到达路由器时,路由器也会去创建转发项.转 ...

  2. [UE4]widget事件:On Mouse Enter、On Move Leave、Set Color And Opactiy

    只要是widget对象,都具有On Mouse Enter.On Move Leave事件

  3. typescript接口扩展、接口的继承

    //接口扩展:接口可以继承接口 // interface Animal{ // eat():void; // } // interface Person extends Animal{ // work ...

  4. CentOS6.6下安装VMware Tools

    摘要:为了方便虚拟机和主机之间复制粘贴文件,拖拽文件,需要安装VMwareTools.下面将我的安装步骤记录如下: 第一步:打开虚拟机后,在VM的工具栏中点虚拟机,安装VMwareTools(T).. ...

  5. UE4如何检测目标在锥形视野内

    转自:http://blog.csdn.net/l346242498/article/details/70237083 做UE4游戏AI方面经常会遇到一个问题,就是何如判定目标在AI单位的视野范围内, ...

  6. HDFS 入门介绍

    HDFS简介 HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问, ...

  7. U3D学习07-插值运算(位移与旋转)

    1.Lerp 线性插值计算.匀速移动 2.LerpAngle 线性插值计算.匀速旋转 3.MoveTowards  4.MoveTowardsAngel  5.SmoothStep非匀速移动  6.S ...

  8. Elasticsearch增删改查

    面向文档 document数据格式 应用系统的数据结构都是面向对象的,复杂的 对象数据存储到数据库中,只能拆解开来,变为扁平的多张表,每次查询的时候还得还原回对象格式,相当麻烦 ES是面向文档的,文档 ...

  9. jQuery实现鼠标滑过图片列表加遮罩层

    这个例子实现的功能是:有一列图片列表,鼠标滑过时,将有遮罩层的另一张图盖在该图片的上方,实现鼠标hover的效果. 一.HTML代码: <div class="home-content ...

  10. python import问题

    python中包:一个文件夹中必须要有__init__.py文件,才能被识别为 包,才能被其他模块引入python中 模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path ...