Php 基本语法

php基本语法

1. 四种不同的开始结束标记

只有<?php ?>、<script language="php"></script>两个总是可用,剩下的<? ?>、<% %>需要在php.ini中配置。即分别开启php.ini中的short-open-tag和asp-tags即可,默认情况下,它们被禁用,而且移植性较差,不推荐使用。

2. 指令分隔符“分号”

末尾的php代码段后面的“;”也可以不要,当使用输出缓冲和include()或者require()省略会更好。

3. 注释

书写恰当的注释是一种良好的习惯。php注释包括多行注释“/* */”,单行注释“//”与“#”,多行注释之内不能嵌套另一个多行注释,其他情况随意搭配都可。

4. 空行

空行可以展示代码层次的美感。比如一个源文件的两个代码片段使用两个空行,两个类的声明之间也是用两个空行。比如,两个函数声明之间用一个空行,函数内局部变量与第一条语句之间用一个空行,块注释或单行注释之前还有一个函数内的两个逻辑代码段之间都是用一个空行。运用空格的情况有,参数列表的逗号后面空格,运算符与操作数之间,for语句表达式逗号后面等。

5.变量

php最基本的存储单元是变量和常量,可以存储不同类型的数据。由于它是弱类型语言,变量的数据类型由上下文或者运行时决定。

5.1 变量声明

“$”后跟变量名,并用“=”赋值,当第一次给一个变量赋值,才创建了这个变量(只是声明,没赋值呢?)。大部分变量如果不是在函数内部声明的,只有在声明处到文件结束的一个单独的范围使用。这里的单独范围不仅包含<?php 到?>,他可以在一个页面的所有开启的php模式下使用,也包含用include和require引入的文件。如果使用cookie或session则还可在更多的页面使用。

可使用unset()释放指定的变量,使用inset()检测变量是否已设置(存在声明),使用empty()检查是否为空。

5.2 变量命名

变量名区分大小写,但是内置结构和关键字以及用户自定义的类名和函数名却不区分大小写。变量名以字母下划线开头,后面是任意的字母,数字,下划线。

5.3 可变变量

      可将一个已定义的变量的值作为另一个变量的名字,如:hi="hello";hi="world";则echo"hi hello"与"hi {hi}"结果都是”hello world“。

5.4 变量的引用赋值

      即在变量名前加“&”,相当于c中的取址操作,将变量地址赋给两一个变量,两个变量共同指向同一个值。只有有名字的变量才可以进行取址赋值,形如(3*9)或函数返回的值都不能。

6. 变量的类型

强类型语言在定义变量或常量前需要指定类型,而php是弱类型语言,具体类型取决于应用时的上下文。

6.1 类型介绍

      php支持8种原始类型和一些伪类型。原始类型如下:

  四种标量类型 boolean(布尔型)
  integer(整形)
  float(浮点型,也称double)
  string(字符型)
数据类型 两种复合类型 array(数组)
  object(对象)
  两种特殊类型 resource(资源)
  NULL

      变量类型由上下文决定,可以使用var_dump()查看某变量的类型和值。

6.2 布尔型

      php中进行关系运算或逻辑运算时返回的都是布尔值。下列情况下的值,默认为是布尔值中的false:

布尔值false,0,0.0,空白字符串或“0”,没有成员变量的数组,没有单元的对象(适用于php4),特殊类型null(包括尚未设定的变量)。

6.3 整形

整形字长和平台有关。可用“+”,“-”表示正负,整数可省略“+”;可以用“0”和“0x”指定八进制或十六进制,但是结果都是以十进制输出;不支持无符号整数,最大整数为2 147 483 647,最小为-2 147 483 647,超出则按照float类型处理。

6.4 浮点型(float或double)

浮点数字长也和平台有关。范围在1.7E-308~1.7E+38,精确到小数点后15位。它只是一种近似的值,永远不可能精确到最后一位,如表示8,内部表示为7.9999999...。也因此,无法表示两个浮点数是否相等,即使是字面量相等的两个浮点数,内部表示也不一样,导致比较的结果出人意料。此时可使用任意精度数学函数或gmp()函数。

6.5 字符串

      字符串长度没有限制,可以使用单引号,双引号,定界符三种字面上的方法定义,但是它们具有功能上的差异。

6.5.1 单引号

单引号内可使用转义字符“\”转义单引号和转义字符本身,不能转义其他特殊字符,否则原样输出。出现在单引号内的变量也不会被变量值取代,只是将变量名输出。使用单引号定义字符串时效率最高,因为省去了php解析时的字符处理转换和变量解析的开销。

6.5.2 双引号

可转义更多特殊字符,可解析字符串中的变量,可使用{}将变量名分离出来再解析(“{beer}s” 或 “{beer}s”)。

6.5.3 定界符

$string<<<EOT  /文本/  EOT; 结束处的EOT顶头第一列写,后面只能跟着分号作为结束。

6.6 数组

php中的数组实际是一个有序图,把values映射到keys,values可以是任何php允许的类型值。

6.7 对象

和其他面向对象语言类似的对象类型,不过在声明使用细节上有差异。

6.8 资源类型

资源类型保存了一个到外部资源的引用,通过专门的函数建立并使用,保存有打开文件,数据库连接,图形画布区域等的特殊句柄,并由程序员创建,使用,释放。

6.9 null

null表示一个变量没有值,null类型唯一可能的值就是null,null不表示空格,不表示零,也不是空字符串,而是表示一个变量值为空。不区分大小写,一下情况变量视为null:将变量直接赋值null,声明的变量尚未赋值,使用unset()销毁的变量。

6.10 伪类型

mixed

number

callback

6.11 数据类型之间的转化

自动类型转换

强制类型转换

变量类型测试函数:is_boolean(),is_int()等。

7. 常量

常量是一个简单值的标识符,脚本执行期间,一旦定义就不能被改变或取消定义。作用域是全局的,可在脚本任何地方声明和访问。常量只能包含类型如boolean,integer,string,float几种标量数据。

7.1 定义和使用

默认大小写敏感,通常使用大写,但是不加$,使用define()函数定义,如define(string name,mixed value[,boolean case_insensitive])。第一个参数是名称,第二个是值,第三个可选,表示是否大小写敏感。可使用defined()检查是否定义了某常量。

7.2 常量和变量的区别

• 常量前没有$

• 只能用define()定义,不能通过赋值语句

• 不用理会变量范围的规则而在任何地方定义使用

• 一旦定义就不能重定义或取消定义

• 值只能是特定的标量

7.3 预定义常量

php中预定义了一系列常量,不区分大小写,可在程序中直接使用完成一些特殊功能。它们有不同的扩展库定义,使用前应加载这些库。有些常量根据使用的位置而变,如_LINE_根据在脚本中的行来决定。

8. 运算符

算数运算符(+,-.*,/,%,++,--)

字符运算符(.) 可连接字符,相当于java中的"+"。

赋值运算符(=,+=,-=,*=,/=,%=,.=)

比较运算符(>,<,>=,<=,==,===,<>/!=,!==)

逻辑运算符(and/&&,or/||,not/!,xor)

位运算符(&,|,^,~,<<,>>)

其他运算符(?:,‘‘,@,=>,->,instanceof)

优先级

9.表达式

简单定义表达式概念就是"任何有值的东西",无值可视为声明。

10. php的语言结构

任何语言都有三种结构:顺序,分支,循环。

分支结构

if、if...else...、if...elseif...else...、switch case...

循环结构

while、do...while、for

特殊控制语句

break、continue、exit(只要执行到exit(),无论它在那个结构都会直接退出当前脚本die()是exit()的别名,可带参数输出一条信息并退出)。

11. php的函数

11.1 函数定义

函数是一个被命名的、独立的代码段,执行特定任务,并可能返回一个值。

11.2 自定义函数

定义

function fname(参数列表){

语句;

return ;

}

调用

如果函数不被调用就不会执行。函数名称有三个作用:

• 通过函数名称调用函数

• 用来传递参数

• 代表返回值

参数

返回值

11.3 函数工作原理与结构化编程

仅当函数被调用,函数中的语句才会被执行。执行完成后,控制权将返回到调用函数的地方。结构化编程中将任务划分为数个小模块,而每个小模块就是一个函数。

12. php变量的范围

大部分php变量只有一个单独的范围,这个单独范围跨度同样包含include和require引入的文件。变量的有效范围依据声明的位置分为局部变量和全局变量。

局部变量

在函数内部声明的变量和函数的参数,都是局部变量,在函数执行结束后,函数内部变量都被释放。

全局变量

全局变量是在函数外部定义的,作用于为从定义开始到本程序文件结束。php中,函数中局部变量会覆盖同名的全局变量,此时可以在引用的全局变量前加上global关键字,或者使用GLOBALS数组,这个数组是运行时自动创建,用于存放全局作用域内的所有变量,通过索引就可以引用。

静态变量

局部变量在存储方式上分为动态存储和静态存储。函数中的局部变量如果不是显式的声明为static类型,默认为动态分配存储空间,在函数调用结束后自动释放空间。这时,如果希望函数执行完成后,其内部变量依然存在内存中,应使用static将该变量修饰为静态变量。改变量在函数第一次被调用时初始化,之后留在内存。

13. 参数传递

php参数传递方式包括按值传递和引用传递,而且还支持默认参数和任意参数列表的传递方式。

值传递

父程序调用函数时,函数有自己的内存区,父程序直接传递变量或是值给函数使用,这时候父程序的变量和传递进函数的变量已经不在同一个地方存放,所以函数对参数的任何操作都不会影响父程序的变量或值。例如:

 1 <?php
 2
 3   function test($arg){
 4
 5     $arg = 100;
 6
 7   }
 8
 9   $var = 300;
10   echo $var;
11   test($var);
12   echo $var;
13
14 ?>

第9行$var存放在全局php所在内存中,将它的值传递给方法后,方法会在属于自己的内存区划出一块用于存放通过参数传递进来的变量值。假设一个在A区,一个在B区,那么函数操作的值在B区,并不能影响A区那个值,因为他们不是同一个值。但是引用传递就不同了。

引用传递

引用传递则是将变量在内存中的相对地址传递给函数,此时,函数操作的值和父程序变量是同一个值,那么函数对传进的参数的修改会影响父程序变量。要进行引用传递,只需在参数前加&,相当于c中的取址运算符。

1 function test(&$arg){
2 }

函数的默认参数

允许定义函数时,指定参数的默认值,如:

 1 <?php
 2
 3   function test($name,$age=10){
 4   }
 5   function show($name="bob hu",$age=10){
 6   }
 7
 8   test("bob hu");
 9   test("bob hu",12);
10   show();
11 ?>

这时,test函数参数age指定了默认值,可以不传,但是name必传。而show函数两个参数都有默认值,可以直接调用,也可传参调用。很多系统函数的前面几个参数是必选项,后面却是可选项,定义的方式就像test函数,如printf(),mysql_query()等。

可变长度参数列表

即,可以传递多于形参个数的实参,这时可在函数内部通过func_get_args()获得一个包括所有实参的数组,也可以通过func_num_args()获得实参个数。该功能类似于javascript函数内部的arguments属性。系统函数array()(难怪,数组可以不预先声明长度,直接加入任意个数元素),echo()等参数都可变长度。

14. 变量函数

类似于javascript中将函数赋给变量,php也有这样的功能,如:

1 <?php
2
3   function test($name,$age=10){
4   }
5
6   $func = "test";
7   $func("bob");
8
9 ?>

(函数名也是地址?)

15. 递归函数

自己内部间接或直接的调用自己。

16. 使用自定义函数库

使用自己定义的函数,可以将这些函数放在文件中,用时,通过一些结构方法包含进来。比如:

 1 <?php
 2
 3   require("bob.php");
 4
 5   if(true){
 6      include("hu.txt");
 7   else{
 8      include "hu.php";
 9   }
10
11   require "bob.txt";
12
13 ?>

区别是,require在脚本执行前就会检查并将文件加载进来,而include在执行时用到的时候才加载。另外,require_once()和include_once()保证某文件只加载一次,不重复加载。

17. 使用系统函数库

要使用系统的函数,就必须引入扩展包或程序库模块,通过phpinfo()和get_loaded_extensions()可以得知php加载了哪些扩展库。

时间: 2024-08-25 23:36:30

Php 基本语法的相关文章

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

Python基本语法

Python基本语法 1.第一个Python代码 print('Hello Word!') 2.注释 1.定义:注释即解释,主要用于提示相关代码的信息. 2.注释分类:单行注释和多行注释 单行注释:# 注释内容 多行注释:''' 注释内容 ''' 或 """ 注释内容 """ 3.变量 1.定义:变量就是可以改变的量 2.命名规则: 1.汉字变量名能用,不推荐使用 2.数字不能开头 3.不可以使用特殊字符,除_ 4.变量区分大小写 5.可以使用关

Java基础语法(1)

一.Java概述 1.1Java语言平台 图1-1  java语言平台 注:开发者都是安装javaSE平台的软件. 1.2.跨平台性 平台:指的是操作系统(Windows,Linux,Mac) 跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行 原理:实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine) 图1-2 跨平台版本 1.3      JVM   JRE   JDK说明   -A:什么是JVM JVM是java虚拟机(JVM Java Vi

eclipse使用与java语法规则

eclipse的使用 1.运行点击"三角图标"或右键Run As运行2.3. java语法规范 1.括号要成对出现2.每句代码应该有分号结束3.java语法区分大小写4.一个文件只能写一个带有public的class声明,还必须和文件名一致.一个文件中不可以有多个带有public的修饰符号5.名称写的时候不要包含关键字和非法字符(字母和下划线开头可以,也可以用数字结尾)6.java代码的语法全部都是半角符号7.学会规范的写代码. 写代码的好习惯: 1.常按保存,写完一句或几句就按一次C

js基本语法总结(一)

1.js简介 a)js是一种网页脚本语言,使得浏览器可以与网页互动. js的一种基于对象和事件驱动,具有安全性能的脚本语言,脚本语言就是在客户端的浏览器就可以互动响应处理程序的语言,而不需要服务器的处理和响应. js也可以与服务器交互响应,而服务器语言(asp.php.jsp)需要将命令上传服务器,经服务器处理后回传处理结果. js可以嵌入到html文件,不需要经过web服务器就可以对用户操作作出响应,使得网页与用户很好的交互,利用客户端电脑的资源适当减少服务器端的压力,并减少用户的等待时间.

sass语法基础知识

文件后缀名 sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号.而本教程中所说的所有sass文件都指后缀名为scss的文件.在此也建议使用后缀名为scss的文件,以避免sass后缀名的严格格式要求报错. //文件后缀名为sass的语法 body background: #eee font-size:12px p background: #0982c1 //文件后缀名为scss的语法 b

JSON语法

JSON基于JavaScript对象字面量 所谓字面量,是对数据值的具体表示.它的字面意思与其想要表达的意思是完全一致的.因为数据交换格式的核心是数据,所以JSON中并不会涉及JavaScript对象字面量中的函数.JSON所基于的JavaScript对象字面量单纯指对象字面量及其属性的语法表示. 名称--值对 JSON中使用冒号(:)来分割名称和值,名称始终在左侧,值始终在右侧. 正确的JSON语法 1.名称始终需要被双引号包裹,而不能使用单引号: 2.为了获得最大可移植性,定义名称时应尽可能