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. Eclipse配置Flex开发环境(转)

    Eclipse配置Flex开发环境 开发环境:Eclipse3.2.Flex Builder31.下载安装Flex Builder3,下载地址:http://subject.csdn.net/adob ...

  2. Redis通用操作(适用于String,Hash,链表等)

    keys pattern 查询相应的key 在redis里,允许模糊查询key 有3个通配符 *, ? ,[] *: 通配任意多个字符 ?: 通配单个字符 []: 通配括号内的某1个字符 redis ...

  3. 设置 Firewalld 防火墙控制对系统的访问

    1.检查 server101 的网卡,记住第二个网卡的名称 [root@server101 ~]# nmcli device DEVICE TYPE STATE CONNECTION br0 brid ...

  4. C# 字符流打印类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  5. 利用SOLR搭建企业搜索平台 之——solr配置solrconfig.xml

    来源:http://blog.csdn.net/zx13525079024/article/details/25310781 solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括 ...

  6. Oracle INV - SO line backorder API

    --Sales Order Lines to backorder API--===================================--SET serveroutput on size ...

  7. [每天一道A+B]签到检测程序

    签到检测程序,解析github提供的api内的json,解决了服务器和本地时间不同步的问题(时差+8H),实现按日期更新当前签到表.下一步是从api获取organization的信息,求出未签到的成员 ...

  8. android 开发如何做内存优化

    不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露.其实如果我 们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造 ...

  9. [置顶] Android Provision (Setup Wizard)

    Android中很多框架性的设计都已经存在了,但在市场上的发布版本里却因为没有很好的理解Android的设计意图而进行自己的定制,或者自己又做一 个冗余的实现.Android中的Provision其实 ...

  10. QQ邮箱附件发送

    一.先造一个邮件发送的窗体 二.编辑邮件发送的代码(包括附件) ①附件添加对话框 string file; private void button6_Click(object sender, Even ...