1, PHP风格

这里为了显示代码把"<"和">"和key值以空格分开了,实际书写时切记不要将其分开:

(1) < ?php ? >: 这是XML风格的标记, 这里我们推荐使用此风格!

(2) < script language="php" < /script>: 这是脚本风格的标记

(3) < ? ?>: 这是简短风格的标记

(4) < % %>: 这是ASP风格的标记

提示:简短风格 和 ASP风格的标记,需要配置php.ini文件,分别将short_open_tag和asp_tags的开关打开

2, 注释

支持3种 = C注释格式*2 + SHELL注释格式*1:

单行注释(//),多行注释(/* */), SHELL单行注释(#)。

注意:单行注释不能出现"?>",多行注释不能嵌套操作。

3, 数据类型

支持8种原始类型=标量类型*4 + 复合类型*2 + 特殊类型*2

boolean, integer, float/double, string; array, object; source, null

这些变量类型通常不由programmer设定, 是PHP根据变量使用上下文在运行时决定的。

变量标识符要以"$"开头,声明和调用时都要带上"$"符。

(3.1) boolean

不是只有false值才为假的,在一些特殊情况下,boolean值也会被认为是false。像:

0, 0.0, "0", 空白字符串(""), 只声明没有赋值的数组等

(3.2)string

定义方式有3种=单引号(') + 双引号(") + 界定符(<<<)

界定符<=>双引号,而单引号与双引号是有区别的:

(3.2.1)双引号所包含的变量会自动被替换成实际数值,而单引号中包含的变量则按普通字符串输出。

(3.2.2)单引号只要对内部的单引号进行转义即可;而双引号则需要对更多的特殊字符进行转义才能正确显示,有

: \r, \n, \t, \\, \$, \', ", \[0-7]{1,3}, \[0-9A-Fa-f]{1,2}

(3.2.3)定义简单的字串时,使用单引号比较合适,如果使用双引号,PHP将花一些时间来处理字串的转义和变量的解析。 因此没有特别的要求,应该尽量使用单引号。

$fir_str="first_string"

echo "$fir_str" = first_string; echo '$fir_str' = $fir_str

(3.3)integer

定义:只能包含整数

表示范围:32位机中,[-2147483648-2147473647]

表示方式:十进制表示法,八进制表示法(0开头),十六进制(0x开头)

注意:遇到非法数字时,非法数字后面的数字会被忽略

赋值的数值溢出或者运算结果溢出时,溢出值会被当做float型处理, Dec(1234567890)=1234567890

hex(1234567890)=78187493520

Oct(1234567890)=342391

Oct(1234567)=342391

(3.4)float

定义:用来存储数字,也可以存储小数

范围:存储精度远大于整数,32位机下有效范围[1.7E-308, 1.7E+308]

表示格式:标准格式,科学记数法格式

注意:浮点型数值只表示了一种近似值,所以尽量避免浮点型数值之间进行等值比较,因为最后的结果往往是不准确的

函数格式:pi()=3.1415926535898

标准格式:3.14159265359=3.14159265359

科学记数法格式:314159265359E-11=3.14159265359

(3.5)array

定义:一组数据的集合,集合中的每个数据称为一个元素,元素包括索引(键名)和值两部分。

索引可以是数字,也可以是字串;

值可以是多种数据类型。

表示格式:$array=('value1', 'value2',......)

$array[key] = 'value'

$array = array(key1=>value1, key2=>value2,......)

注意:声明数组后,它的元素个数可以自由更改,只要给数组赋值,数组就会自动增加长度。 示例:

$arr1 = array('This', 'is', 'a', 'example');

$arr2 = array(0=>'php', 1=>'is', 'the'=>'the', 'str'=>'best');

$arr3[0] = 'tmp_name'

(3.6)object

有两种方法:面对过程和面对对象

(3.7)resource

resource(资源)是一种特殊变量,又叫做句柄,保存到外部资源的一个引用。资源是通过专门的函数来建立和使用的。

在使用资源时,系统会自动启用垃圾回收机制,释放不再使用的资源,避免内存消耗殆尽。因此资源很少需要手工释放。

(3.8) null

null(空值),特殊的值,顾名思义,表示没有为该变量设置任何值,唯一的值就是null。

null不区分大小写,null=NULL。其产生有3种情况:没有赋任何值,被赋值null,被unset()函数处理过的变量。

$str1= null; => str1 is null

$str2='str'; unset($str2); => str2 将不可用,或者即便使用它,也将为NULL值,且PHP会报NOTICE警告

(3.9), 类型转换

转换成boolean时,null, 0 和未赋值的变量或数组会被转换为false,其它的为真

转换成integer时,false转换为0,true转换为1,浮点型的小数部分会被舍去,字符型将截取到非数字位

,若不以数字开头将输出0

表示方式:1, (type)var

2,bool settype(mixed var, string type)

注意:两者区别是:使用类型操作符直接输出转换后的结果,原变量不会发生变化; 而使用settype()函数后,原变量会被修改

。 示例:

integer(314159265359E-11)=3

num=3.1415926r*r

(integer)num=3,now num=3.1415926r*r

settype($num, 'integer'): ohoh, $num is changed, but now num=3

4, 常量

获取方法:直接使用常量名;使用constant()函数;判断变量是否定义使用defined()函数,

使用方法:使用常量时,常量前面不带"$"符号,且不能放在""内,而使用defined判断常量是否存在时,需要加上""号

注意:

(1)常量VS变量区别

1.1),常量只能用define()函数定义,而不能通过赋值语句;建议不要以__开头,以便与预定义常量冲突引发结果异常。

1.2),常量可以定义大小写敏感还是不敏感,而变量永远是大小写敏感;

1.3),常量一旦定义就不能被重新定义或者取消定义,且常量的值只能是标量类型;变量不受此类限制;

1.4), 使用常量时,常量前面不带"$"符号,还有很多注意点,总之使用不方便,还容易混淆,效率也低

因为PHP处理常量的时候要进行多次查找;而使用变量时是要带"$"符号的;

1.4),常量可以不用理会变量的作用域,可以在任何地方定义和访问。

(2)常量有自身的特点,能少用就少用

2.1) PHP处理常量的方法过于宽松,所以会产生常量使用上的混淆,如果能够严格一些的话,是会避免很多问题的。 实际过程中,能使用变量就不要用常量。

2.2) 常量 (3)重赋值问题

虽然说不能重新定义,但再次赋值PHP也只会产生NOTICE错误,如果你定义之前,其它人也定义了同名常量,这将会产生无法预知的结果。

补救方法:使用常量之前要使用defined()来确认一下常量是否已经定义过。

示例:

define("MESG", "This is a msg");

MESG = This is a msg(OK).

$MESG = (NG).

defined("MESG") => 1(OK).

defined('MESG') => 1(OK).

defined($MESG) => (NG).

defined(MESG) => (NG).

isset(MESG) =>(NG).

当前文件名=D:\PHP\www\myTest\ch03.php,当前行数=150,PHP版本信息=5.4.22,当前操作系统=WINNT

6, 变量

定义:PHP4之前需要在使用前声明变量,PHP4之后只要在需要为变量赋值即可,使用前可以不用声明。

变量名称 = "$" + 标识符;

变量名大小写敏感;标识符以字母,数字,下划线组成;但不能以数字打头。

赋值:3种方式: 以"="号赋值;变量间赋值;引用赋值;

变量间赋值:赋值后两个变量使用各自的内存,互不干扰。

引用赋值:赋值后,两个变量名访问同一个变量内容,当改变其中一个变量的值时,另一个也跟着发生变化。用&符号来表示引用。

注意:PHP不需要声明变量,但使用时要给初始化值,否则会出现程序逻辑错误。变量声明和变量初始化是两码事。 6.1) 变量作用域

有3种情况:局部变量;全局变量;静态变量。

局部变量:在函数内部定义,作用域是所在函数;

全局变量:在函数外部定义,作用域是整个PHP文件,但在函数内部不可用,除非使用global关键字声明。

静态变量:使用static定义,能够在函数调用结束后仍保留变量值,当再次回到其作用域时,又可以继续使用原来的值。

提示:在函数变量,其作用域为所在函数;如果在函数外赋值,将被认为是完全不同的另一个变量。

6.2) 可变变量

定义:用一个变量的值作为另一个变量的名称。

$var1="var2",

$$var1="var3";

echo $var1. $var2;

第1个语句声明了变量var1,其内容为var2.

第2个语句声明了可变变量var2,其内容为var3. 这里$$var1可以理解成$($var1); 因此第3个语句就可以直接把var1的内容var2当成变量来使用了。

6.3)预定义变量(略)

PHP提供了很多非常实用的预定义变量,通过这些预定义变量可以获取到用户会话、用户操作系统的环境和本地操作系统的环境等信息,具体预定义变量可参照相关文档。

7,运算符

算法运算符:+ - * / % ++ -- ;

字串运算符:.(英文的句号);

赋值运算符:= += -= *= /= .= %= ;

位运算符: &(位与) |(位或) ~(位非) ^(位异或) <<(左移) >>(右移) ;

逻辑运算符:&&[and](逻辑与) ||[or](逻辑或) !(逻辑非) xor(逻辑异或) ;

比较运算符:>(大于) <(小于) ==(等于) !=(不等于) <=(大于等于) >=(小于等于) ===(恒等) !==(非恒等) ;

错误控制运算符:@ ;

三元运算符:?= ;

注意: 1)字串类:如果字串间使用"+"号,PHP会先把字串转换成数字,然后再做算术运算。

2)逻辑类:&&与and ||与or 有着不同的优先级

3)比较类:===表示不只是数值上相等,而且两者类型也一样。

7.2,运算符优先级和结合规则

不同优先级先高后低,相同优先级从左到右。也可以使用小括号,括号内运算最先进行。

pi = 3.1415926r*r; num = 1;

$pi.$num = 3.1415926r*r1; $pi+$num = 4.1415926

8, 函数

注意:

8.1) 参数传递

函数间参数传递有3种:按值传递,按引用传递,和默认参数。

按值传递:

将实参的值复制到形参中,函数内部针对形参进行操作,操作结果不会影响到实参。即函数返回后,实参的值不会改变。

按引用传递:形参前标注"&"表明是按引用传递,

就是将实参的内存地址传递到形参中,函数内部的所有操作都会影响到实参的值。函数返回后,实参的值会发生变化。

默认参数:

可以将某个参数设为可选参数,将可选参数放在参数列表末尾,并且指定默认值为空。

使用默认参数时,默认参数必须放在非默认参数的右侧,否则函数可能出错。从PHP5开始,默认值也可以通过引用传递。

8.2) 变量函数

8.3)对函数的引用

函数参数传递中有按引用传递的方式,可以修改实参的内容。引用可用于普通变量,函数参数,也可用于函数本身。对函数的引用,就是对函数返回结果的引用。

和参数传递不同,这里必须在两个地方使用"&"符号,用来说明返回的是一个引用。

8.4)取消引用

不再需要引用时,可以取消引用。取消引用使用unset()函数,它只是断开了变量名和变量值之间的绑定,而不是销毁变量值。

普通函数测试:

10 * 10 = 100

变量函数测试:

hello, I'm comming.

TOM has gone

I'm back, Lily

对函数的引用测试:

看到了

取消引用测试:

$num = 1234, $ref_num = 1234

unset($ref_num) => $num = 1234, $ref_num is unusable.

(unset)($ref_num) => $num = 1234,$ref_num = 1234

【PHP入门到精通】:Ch03:PHP语言基础的更多相关文章

  1. 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识

    数据库从入门到精通合集(超详细,学习数据库必看) 一.关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是 ...

  2. 零基础入门非常好的C语言基础资料

    C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成.格式.以及良好的书写风格,使小伙伴对c语言有个初步认识. 例1:计算两个整数之和的c程序: #include main() { in ...

  3. 数据库SQL语言从入门到精通--Part 4--SQL语言中的模式、基本表、视图

    数据库从入门到精通合集(超详细,学习数据库必看) 前言: 使用SQL语言时,要注意SQL语言对大小写并不敏感,一般使用大写.所有符号一定是西文标点符号(虽然是常识,但我还是提一嘴) 1.模式的定义与删 ...

  4. 数据库SQL语言从入门到精通--Part 1--SQL语言概述

    数据库从入门到精通合集(超详细,学习数据库必看) 一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特 ...

  5. shell从入门到精通进阶之一:Shell基础知识

    1.1 简介 Shell是一个C语言编写的脚本语言,它是用户与Linux的桥梁,用户输入命令交给Shell处理,Shell将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户. 下面是处 ...

  6. Matlab--从入门到精通(chapter2 matlab 基础知识)

    Chapter2 Matlab 基础知识 1.基本数学运算符号 注:矩阵的右除是一般意义的除法,但是左除具有对称意义,即A./B=B.\A 2. 命令行中的常用标点 3.常见的操作命令 4.输出数据显 ...

  7. Matlab---从入门到精通 Chapter 4 编程基础

    ---恢复内容开始--- 4-1 M文件编辑器 在命令窗口输入edit命令,可以打开M文件编辑器,创建新的M文件 在命令行中输入edit filename,那么可以打开在当前目录环境下的M文件 4-2 ...

  8. Python基础知识详解 从入门到精通(七)类与对象

    本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...

  9. 《java从入门到精通》学习记录

    目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...

  10. vuejs2从入门到精通与项目开发实战

    vuejs2从入门到精通:一.基础部分0.课件1.介绍2.vue实例3.模板语法4.计算属性和观察者5.Class与Style绑定6.条件渲染7.列表渲染8.事件处理9.表单输入绑定10.1.组件(1 ...

随机推荐

  1. Linux进程调度原理

    Linux进程调度原理 Linux进程调度机制 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效: 2.加强交互性能: ...

  2. ArcGIS Engine -- 常用方法

    空间关系 计算两点间距离 feature平移 计算范围 得到点集合的n倍Envelope范围 查询 查询要素,返回多个要素union后的Geometry 查找图层 得到地图上图层列表 根据名称在地图上 ...

  3. idea新建maven项目时,mvn archetype:generate 速度缓慢

    原文 idea新建maven项目时,mvn archetype:generate 速度缓慢 1 现象: 用IDEA新建maven项目,填写完各种参数,创建时,控制台卡在“[INFO] Generati ...

  4. CentOS中的chkconfig命令

    chkconfig:    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接.语法:    ...

  5. C++:主要几种排序算法及其复杂度

     常见排序算法稳定性和复杂度分析快速简记以及转载 分类: 算法 2012-02-07 22:18 399人阅读 评论(1) 收藏 举报 算法mergeshell http://blogold.chin ...

  6. mysql 生成批量存储过程

    CREATE  PROCEDURE `BatchInsert`(IN init INT, IN loop_time INT)BEGIN DECLARE Var INT; DECLARE ID INT; ...

  7. MDX语法

    https://msdn.microsoft.com/zh-cn/library/ms145506.aspx

  8. linux/shell 文本文件删除/删掉空行

    分别用sed awk perl grep 实现: sed '/^$/d' input.txt > output.txt #output file: output.txt sed -i '/^$/ ...

  9. SQL[连载1]简介

    SQL[连载1]简介 SQL 教程 SQL 是用于访问和处理数据库的标准的计算机语言. 在本教程中,您将学到如何使用 SQL 访问和处理数据系统中的数据,这类数据库包括:MySQL.SQL Serve ...

  10. emplace_back减少内存拷贝和移动

    --------<深入应用C++11:代码优化与工程级应用>第2章使用C++11改进程序性能,本章将分别介绍右值引用相关的新特性.本节为大家介绍emplace_back减少内存拷贝和移动. ...