Char3 php基础知识 | ||||||||||||||||||||||||||||||||||||
—PHP的基本语法 Php在html中嵌入3种方式 1 <?php ?> 2 <? ... ?>修改php.ini中 short_open_tag = on 3 <% ... %>修改php.ini中asp_tags = on 4 <script language="php">...</script> 注释 作用:(1)解释代码功能(2)调试程序 1 单行注释 //这里是单行注释里的内容 2 多行注释 /* 多行注释*/ 3 Shell 风格的单行注释 #注释内容 标识符/变量命名规范: ? 必须以$开头 ? 第一个字符必须是字母(可以是中文)或者是下划线_,不能使用数字 ? 标识符不能出现空格(通常使用下划线进行字符分隔) ? 变量名区分大小写,常量区分大小写。其他都不区分大小写函数名不区分大小写 ? 编码规范: (1)缩进 每缩进一个单位是一个tab(4个空白字符宽度) (2){} 首大括号与关键字同行,尾括号与关键字同列 (3)运算符 每个运算符与两边参与运算的值或表达式要有一个空格,字符连接符除外 (4)'(' 与关键字紧贴在一起 “)”出来)与. 其他一律用空格分隔 (5)不能出现空白的带有tab 和空格的行,大的程序块上下加入空行,程序块之间只有一个空行,少于15行的程序块可不加空行 ● 函数定义中的左小括号与函数名紧挨着,中间无需空格 ● 开始的做大括号与函数定义为同一行,中间加一个空格,不要另起一行 ● 具有默认值的参数应该位于参数列表的后面 ● 函数调用与定义的时候参数与参数之间加入一个空格 ● 必须仔细检查并切实杜绝函数起始缩进位置与结束缩进位置不同的现象 (6)引号 ● 单引号'':任何变量,特殊转义字符 不会被解析,仅支持“'”, “”的转义 ● 双引号"": 变量,转义字符都会被解析,还有两项特殊功能性转义“$”,“{$array['key']}”:双引号中表示变量索引时,可以不加引号 ◆ 优点:程序编写方便 ◆ 缺点:php的解析很慢 (7)数组 若,数组小标是字符串型,必须用单引号将下标括起eg:$array['key']; 绝大多数可以使用单引号的场合,禁止使用双引号 必须使用单引号情况: ● 字符串为固定值,不包含转义字符 ● 数组为固定下标 ● 表达式中不需要带入变量,eg:$string='test'; 正则表达式中全部使用双引号 数据库sql语句中,所有数据必须加单引号,无论数值还是字串 (8)变量、对象、函数名一律为小写格式,除非必要,单词之间一般不使用下划线“_”进行分割 (9)常量应该总是全部使用大写字母命名,可使用下划线来分割单词 php内建值TRUE、FALSE、NULL 必须大写 (10)任何变量在进行累加,直接显示或存储前必需进行初始化 $number = 0;//数值型初始化 $string = '';//字符串初始化 $array = array(); //数组初始化 若判断一个无法确定的变量时,可用empty() 或isset()判断 若确定此变量一定已经被初始化并赋值则用if($switch)形式 Empty()与isset() 的区别为: ● Bool empty(mixed var)(前提是变量存在) ? 如果var 是非空或非零的值,则empty()返回 FALSE。 即:“”,0,“0”,NULL,FALSE,array(),var $var及没有任何属性的对象都被认为是空的,如果var为空,则返回TRUE ● Bool isset(mixed var[, mixed var[, ...]])语言结构 ? 如果var存在则返回TURE,否则返回FALSE. ? 如果已经使用unset()释放了一个变量之后,它不再是isset()。若使用isset()测试一个被设置成NULL的变量,将返回FALSE。同时要注意的是一个NULL字节("�")并不等同于php 的NULL常数 1,没有设置过的变量,2,使用unset()之后的3.被是指NULL的变量 判断一个变量是否为数组,请使用is_array()这种判断尤其适用于对数组进行遍历的操作,foreach() 判断一个数组元素是否存在,可使用isset(array(['key']),也使用empty() (11)包含调用程序文件,全部使用 require_once,以避免可能的重复包含问题; 包含调用缓存文件,由于缓存文件无法保证100%正确打开,用include_once或include. 必要时,可以使用@include_once或@include的方式,以忽略错误提示 Require 与 include 区别 Require () 程序出错,为致命错误,程序将不再执行 Include()程序出错,报出警告,程序仍继续执行 Include_once() 与 include()区别: Include_once() 执行之前,会检查之前此函数包含的文件有没有被包含过,若包含过则跳过不执行此语句。 Include () 不会检测,直接执行 包含和调用代码中,须以“./”或DISCUZ_ROOT.' ./ '开头,避免直接写程序文件名(eg: require_once 'x.php') 所有包含和调用的程序文件,包括不限于程序、缓存或模板,通常其不能被直接URL请求。Discuz!通过在./include/common.inc.php中定义一个标记性常量IN_DISCUZ,来判断程序是否被合法调用。因此, 在除了./include/common.inc.php以外的任何一个被包含和调用的程序文件中,需要包含以下内容,以使得访问者无法直接通过URL 请求该文件: If(!defined('IN_DISCUZ')){ Exit('Access Denied'); } (12)错误报告级别 开发和调试阶段 Php.ini 使用 error_reporting(E_ALL);作为默认的错误报告级别 error_reporting(2047) 发布阶段 使用error_reporting(E_ERROR | E_WARNING | E_PARSE);作为默认的错误报告级别error_reporting(7) 上线调试 Error_reporting(0);上线的错误级别 输出命名 ◆ echo 输出一个或多个字符串 echo()是一个语言结构 //因为它是一个语言结构,所以不一定用小括号来指明参数,单引号,双引号都可以 Void echo(string $arg1[, sting $...])输出所有参数 $中古ddd=1; echo $中古ddd; echo($中古ddd); echo $str, $中古ddd, $str1;传递多个参数,不加括号 ◆ <?=$foo ?> k注:php.ini 中 short_open_tag 打开 ◆ Print 输出字符串print()是一个语言结构 总是返回1 Int print(string $arg) print($str); print $str; ◆ Printf()输出格式化字符串 返回输出字符串的长度 Int printf(sting $format [, mixed $args[, mixed $...]] ) ◆ Sprintf 返回一个格式化后的字符串 String sprintf(sting $format [, mixed $args[, mixed $...]]) 与printf 区别为sprintf()需要用echo 输出 $format 指定替换类型明细表 %b 表示整型数据,以二进制形式输出 %c 表示整型数据,以ASCII形式输出 %d 表示整型数据,以有符号形式输出 %u 表示整型数据,以无符号形式输出 %o 表示整型数据,以八进制形式输出 %x 表示整型数据,以十六进制输出,字母部分小写 %X 表示整数数据,以十六进制输出,字母部分大写 %f 表示浮点型数据 %s 表示字符串 ◆ Flush 刷新输出缓冲 该函数将当前为止程序的所有输出发送到用户的浏览器 Void flush( void ) —数据类型
布尔型 不区分大小写,一般大写 FALSE false,0 ,0.0,"0","",不包括任何元素的数组,(不包括任何成员变量的对象)null(包括尚未设定的变量),从没有任何标记的XML文档生成的SimpleXML对象 TRUE 除以上说明的情况,其它值都认为true(包括任何资源) 整型 整型最大值常量表示PHP_INT_MAX表示,若超出整型范围,则被解释为float,若运算结果超出整型范围,也会返回float Intval()将一个值转换为整型 Float round() 二进制 十进制 八进制 数字前边+0, 十六进制 数字前边+0x 浮点型 浮点数的字长和平台相关 字符串型 一个字符串就是由一系列的字符组成,一个字符就是一个字节,一个字节只能有256种不同的变化,这也暗示php无法原生支持Unicode。 字符串长度限制只和运行PHP程序的该台计算机内存大小有关 定义字符串四种方法 (1)单引号 只解析单引号和反斜线 echo 'aaaaaaa'a a$aaaa'; //aaaaaaa'a a$aaaa (2)双引号 解析字符串中的变量 和特殊含义的字符 转义字符
$,",[0-7]{1,3} 八进制的字符,x[0-9A-Fa-f]{1,2}十六进制字符 (3)Heredoc语法结构(变量可以被解析) 常被用来初始化静态变量和类的属性和常量 Eg: Echo <<<EOF($a=<<<EOF) .... EOT;(必须在一行开始的位置) (4)Nowdoc语法结构(变量不被解析)5.3.0加入的 常用来初始化类的属性或常量 Eg: Echo <<<'EOF'($a=<<<EOF) .... EOT;(必须在一行开始的位置) $a="a";“$a” ,"${a}" (简单)或“{$a}”(复杂) //输出a 变量解析两种语法规则:
|