众所周知,常量、变量、数组、类和对象及方法共同构成了PHP的基石。那么什么是常量?什么是变量?什么是数组?什么是类和对象及方法?我在此谈谈个人浅见,新手指引,高手勿喷。

PHP 常量

定义:常量是单个值的标识符(名称),有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号),在脚本中无法改变该值,常量贯穿整个脚本,且作用域自动全局。

简单来说,日常生活中固定不变的事物皆可为常量,例如1公斤=1000克,1分钟=60秒;例如说,我们在php脚本编写一分钟倒计时功能时,需要用到常量60秒,我们即可定义一个常量:define("min","60");;这个常量min值为60,拥有全局作用域,且无法被改变。

php中创建常量使用define() 函数,它包括三个参数:1.参数名,2.参数值,3.是否对大小写敏感(此参数可以不设置,默认为false,不敏感)。形如define(name,value),例如上文中定义常量的代码为:define("min","60");

PHP 变量

我对变量的理解:在日常生活中,有某些事物的值是不断变化的,例如说体重、年龄、日照时长等等等等,为了描述这些事物,显然单纯使用常量是无法实现的,因此变量应运而生。

定义:变量是一个可变化值的标识符(名称),其值不断改变,可以是数字、字符串、数组、对象等,实质上变量就是一个存储信息的容器。变量又分为全局变量与局部变量,局部变量在定义此变量的函数方法外,无法被调用。

简单来说,日常生活中不断变化值的事物即为变量,例如体重,100个人可能有100个体重值,因此在php中涉及到人的属性时,体重weight必须定义为变量。举例而言,我们用php编写加法功能:$c=$a+$b;,显而易见,两个加数及结果的值都是变化的,则这两个加数及结果都要被定义为变量。

php与js或是c不同,在PHP中没有创建变量的命令,变量会在首次为其赋值时被创建,即不需定义,可直接使用。定义方法形如:$name=value;例如上文中的加法功能中,三个变量的定义:$a=1;$b=2;$c=$a+$b;

变量命名规则:

  1.变量以 $ 符号开头,其后是变量的名称

  2.变量名称必须以字母或下划线开头

  3.变量名称不能以数字开头

  4.变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)

  5.变量名称对大小写敏感($y 与 $Y 是两个不同的变量),这一点至关重要。

PHP 数组

我对数组的理解:上文提到,人的体重必须定义为变量,但是若在php脚本中涉及到多个人,那为了描述多个人的体重,就需要定义多个体重变量。若脚本涉及到许多个甚至是无数个人,那显然单纯的定义变量是无法实现的,为了解决这类问题,php定义了数组。

定义:可以同时保存多个值的变量即为数组,数组是一种特殊的变量。理论上而言,数组可以储存一串毫无关联的变量的值,但实际上,我们在php中使用数组,储存的一般都是一串具有相同属性变量的值,例如描述人体重的数组、描述人年龄的数组等等。

简单而言,为了描述生活中具有相同属性的事物,就需要用到数组。譬如说人的体重,学生的成绩,汽车的品牌等等。举例而言,使用php编写教学系统,涉及到某门功课学生成绩,则需要定义数组:$result=array("95","96","85");这个数组拥有三个值,95,96,85,表示三个学生在某一门课的成绩。

php中创建数组需要使用 array() 方法,形如$arrayName = array(value1,value2,value3...);,举例来说:$result=array("95","96","85");,这就是数组的创建。

数组通过下标进行访问,如对上文中的数组$result进行访问,$result[0]代表第一个值95,$result[1]代表第二个值96...

数组又细分为三种类型:

  1.索引数组 - 带有数字索引的数组

  2.关联数组 - 带有指定键的数组

  3.多维数组 - 包含一个或多个数组的数组

索引数组即常见以数字下标进行访问的数组,譬如上文的$result就是一个索引数组,索引数组的输出一般通过for循环。

关联数组即给数组值进行命名的数组,形如$arrayName = array(name1 => value1,name2 => value2,name3 => value3...)。实例:$weight = array('Bob' => '62','Davi' => '59','Susan' => '48');,关联数组的访问通过数组值的名来进行访问,例如$weight[Bob]代表第一个值62.。关联数组的输出通过foreach as来进行输出。

多位数组即数组值依旧为数组的数组,形如$arrayName = array(array(value1,value2,value3...),array(value1,value2,value3...),array(value1,value2,value3...)...);,多为数组的访问也是通过下标进行访问的。

PHP 类、对象及方法

我对对象及类的理解:现实生活中的一切事物皆为对象。上文提到,为了描述多个人的多个属性,需要用到数组。然而实际上,人不只拥有属性,人还拥有行为,譬如吃饭、睡觉、打豆豆...,那我们要如何描述人的行为?因此php定义了类和对象。

在我的理解中,php是一个世界,在这个世界中,常量是点,变量是线,数组是面,类和对象则是立体。

定义:

  对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、行为、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

  类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。简而言之,对象的抽象是类,类的实例化就是对象,类实际上就是一种数据类型。类具有属性,它是对象状态的抽象,用数据结构来描述类的属性。类具有方法操作,它是对象行为的抽象,用操作名和实现该操作的方法来描述。

对象和类的关系:类与对象的关系就如模具和铸件的关系,类实例化的结果就是对象,而对象的抽象就是类,类描述了一组具有相同特性(属性)和相同行为的对象。

实例化对象需要先有类,然后才能实例化,

类的声明方式形如:
class ClassName{}

类中声明变量的方式形如:
public $name1;//声明公有变量
private $name2;//声明私有变量
在类中,公有变量可以在实例化对象中赋值与访问,而私有变量无法在实例化对象中赋值与访问,只能在类内部访问

类中声明方法的方式形如:
public function functionName1(){}//声明公有方法
private function functionName2(){}//声明私有方法
在类中,公有方法可以在实例化对象中执行,而私有方法无法在实例化对象中执行,只能在类内部执行

类方法中访问类变量的方式形如:
$this->name

对象和类代码实例:

<?php
//头部声明显示方式为text/html,编码格式为utf-8,避免出现中文乱码
header('Content-Type:text/html;charset=utf-8');
class person{
//类中变量的定义
public $name;//定义公有变量
public $age;
public $weight;
public function eat(){
echo $this->name.'正在吃饭!<br>';
}
public function sleep(){
echo $this->name.'正在睡觉!<br>';
}
public function play(){
echo $this->name.'正在打豆豆!<br>';
}
public function personInfo(){
echo '个人信息:<br>姓名:'.$this->name.'<br>年龄:'.$this->age.'<br>体重:'.$this->weight;
}
} //类的实例化就是对象,$obj是一个对象
$obj = new person;
$obj->name='meizi';//给对象的属性赋值
$obj->age='22';
$obj->weight='58';
$obj->eat();//调用对象的方法
$obj->sleep();
$obj->play();
$obj->personInfo();
?>

效果如图所示:

新手指引,php什么是常量、变量、数组、类和对象及方法?的更多相关文章

  1. el-tree或者el-table里边的slot-scope传递变量但是没有元素对象解决方法

    传统的是点击一个元素可以通过e.target进行获取,但是对于这种的回调函数里边加个e再进行e.target就获取不到元素了,更获取不到点击的位置那么可以在触发的地方写成箭头函数并且传递一个变量.如下 ...

  2. [MarsZ]Unity3d游戏开发之Unity3d全策划配置新手指引

    Unity3d全策划配置新手指引 前言... 2 版本... 2 作者... 2 功能... 2 类型... 2 触发类型... 2 步骤类型... 3 实现... 4 简要... 4 策划方面... ...

  3. Java基础笔记(2) 程序入口 关键字 标识符 常量 变量

    提醒:关于那些和我一样新鸟来看资料的,能看懂多少看多少,看不懂的就是不重要,重要的你想我自己学习肯定要标注的,这些信息明白每个知识点实际作用就好了,其他的比如等会讲的常量内存,常量池这些都是我找的资料 ...

  4. java(Hello World) 常量 变量和注意事项

    一.java的入门程序 java语言的简单介绍 关于java语言的特点:(1) 简单性和c++相比,java没有头文件.指针.运算符重载等,java语言相当于是一个比较纯净版的c++.(2) 面对对象 ...

  5. TensorFlow入门(常量变量及其基本运算)

    1.tensorflow常量变量的定义 测试代码如下: # encoding:utf-8 # OpenCV tensorflow # 类比 语法 api 原理 # 基础数据类型 运算符 流程 字典 数 ...

  6. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  7. 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句

    [源码下载] 速战速决 (1) - PHP: 概述, 常量, 变量, 运算符, 表达式, 控制语句 作者:webabcd 介绍速战速决 之 PHP 概述 常量 变量 运算符 表达式 控制语句 示例1. ...

  8. 40.Android之新手指引界面学习

    我们经常可以看到打开新App会有新手指引界面,类似蒙板效果今天来学习.原理其实很简单,设置一个透明Activity或者Dialog,然后修改其属性即可.由于实现比较简单,就贴一部分代码. 1.在And ...

  9. Swift学习(四)常量&变量&基础数据类型

    常量和变量 常量: 使用let关键词来声明一个常量 所指向的是一个特定类型的值,如数字10或者字符”hello”,常量的值是不能够被二次修改的 编程时使用常量能够让代码看起来更加安全和简洁! let ...

随机推荐

  1. Paper: A novel visibility graph transformation of time series into weighted networks

    1. Convert time series into weighted networks. 2. link prediction is used to evaluate the performanc ...

  2. Linux命令 sleep 延迟

    用途说明 sleep命令常用于在Linux shell脚本中延迟时间 常用方式 注意:以下用法中<n>可以为小数. 格式:sleep <n> 格式:sleep <n> ...

  3. Spring MVC3 + Ehcache 缓存实现

    转自:http://www.coin163.com/it/490594393324999265/spring-ehcache Ehcache在很多项目中都出现过,用法也比较简单.一般的加些配置就可以了 ...

  4. Mysql主键外键操作

    外键: ·一对多 ·多对多 ·一对一 ·修改表 ·复制表   主键:   rimary key auto_increment(primary key是主键通常和auto_increment自动增加混合 ...

  5. AcWing 282. 石子合并

    #include <iostream> #include <algorithm> using namespace std; ; int n; int s[N];//前缀和 in ...

  6. 7.log4j

    Log4j:日志工厂的一部分(使用起来比较麻烦) 1.要想使用外部类,得先导包 pom.xml <dependency> <groupId>log4j</groupId& ...

  7. 题解【UVA12097】Pie

    题目描述 输入格式 输出格式 输入输出样例 输入样例#1 3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2 输出样例#1 25.1327 3.1416 50.26 ...

  8. 并发之ATOMIC原子操作--CAS乐观锁原理(二)

    1.乐观锁介绍 程序完成并发操作时,访问数据时每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止.就是当去做某个修改或其他操作的时候它认为不会有其他线程来做同样的操作(竞争) ...

  9. JavaWeb项目中的Servlet

    1.创建Servlet 2.在jsp中用ajax调用 $.post("<%=request.getContextPath()%>/AjaxValidationServlet&qu ...

  10. EAC3 Spectral Extension Process

    1.overview 当使用Spectral extension时,channel中的高频部分的transform coefficients由低频部分合成. transform coefficient ...