PHP笔记来啦~绝对干货!
以下为我以前学PHP时做的笔记,时不时的也会添加一些基础知识点进去,有时还翻出来查查。
//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出。/* 【命名规则】 */常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH
变量名建议用下划线方式分隔 // $var_name函数名建议用驼峰命名法 // varName定界符建议全大写 // <<<DING, <<<'DING'文件名建议全小写和下划线、数字 // func_name.php私有属性名、方法名建议加下划线 // private $_name _func接口名建议加I_ // interface I_Name/* 语言结构 */array(), echo(), empty(), eval(), exit(), isset(), list(), print(), unset()echo, print 可省略括号。/* 预定义常量 */PATH_SEPARATOR //路径分隔符(Windows为分号,类Unix为冒号)DIRECTORY_SEPARATOR //目录分隔符PHP_EOL //当前系统的换行符PHP_VERSION //PHP版本号PHP_OS //PHP服务操作系统PHP_SAPI //用来判断是使用命令行还是浏览器执行的,如果 PHP_SAPI=='cli' 表示是在命令行下执行PHP_INT_MAX INT最大值,32位平台时值为2147483647PHP_INT_SIZE INT字长,32位平台时值为4(4字节)M_PI //圆周率值M_E //自然数//PHP运行环境检测函数php_sapi_name() //返回一个PHP与WEB服务器接口类型的小写字符串该函数返回值与常量PHP_SAPI一致!接口类型:SAPI(the Server API, SAPI)可能值:aolserver、apache、apache2filter、apache2handler、caudium、cgi、cgi-fcgi、cli、 continuity、embed、isapi、litespeed milter、nsapi、phttpd、pi3web、roxen、thttpd、tux、webjames/* 大小写问题 */- 类名、方法名、属性名、函数名:不区分大小写- 变量名、常量名、元素下标:区分大小写/* 可变标识符 */可变变量 $i = 3; $k = 'i'; echo $$k; //输出3可变函数 function func() {echo 'hello!';} $i = 'func'; $i(); //输出hello可变下标 $i = '1234'; $k = 3; echo $i[$k]; //输出4可变类名 class CLS{public $k = 'hello';} $i = 'CLS'; $j = new $i; echo $j->k;可变属性 class CLS{public $k = 'hello';} $i = 'k'; $j = new CLS; echo $j->$i;可变方法 class CLS{public function k(){echo 'hello';}} $i='k'; $j=new CLS; $j->$i();/* 可变变量 */* 用于业务逻辑判断得到某些具体信息 $var_name = "class_name"; $$var_name = "PHP0913"; // $class_name = "PHP0913";$class_name已存入内存中 var_dump($class_name); // var_dump($$var_name);/* 变量函数 */get_defined_vars //返回由所有已定义变量所组成的数组(包括环境变量、服务器变量和用户定义的变量)/* unset() */* unset()仅删除当前变量名和引用,其值并未被删除* 引用传递中,删除一个变量及其引用,其他变量及引用均存在,且值依然存在 echo "<br />"; $v3 = '值'; $v4 = &$v3; unset($v4); var_dump($v3, $v4);/* 变量的最长有效期 */* 当前脚本的执行周期,脚本执行结束,变量即消失/* 预定义变量/超全局变量 */$GLOBALS$_COOKIE$_ENV$_FILES$_GET$_POST$_REQUEST$_SERVER$_SESSION/* 常量定义 */define(常量名, 常量值, [区分大小写参数]) //true表示不区分/false表示区分大小写const 常量名 = 常量值 // 新,建议常量名可以使用特殊字符constant($name) // 获取常量名 // 例:echo constant('-_-');/* 常量相关函数 */definedget_defined_constants/* 预定义常量 */__FILE__ 所在文件的绝对路径__LINE__ 文件中的当前行号__DIR__ 文件所在目录__FUNCTION__ 函数名称__CLASS__ 类的名称__METHOD__ 类的方法名__NAMESPACE__ 当前命名空间的名称/* 整型 */整型占用4字节,共4*8=32位,最大值为2147483647,最小值为-2147483648,最小值的绝对值比最大值的大1最高为表示正负,1表示负,0表示正/* 进制转换函数 */只能十进制与其他进制进行转换,只有六种转换时,参数应是字符串(即不可含八进制的“0”或十六进制的“0x”)10 dec2 bin8 oct16 hexhexdec() 十六进制转十进制 也可写hex2dec()dechex() 十进制转十六进制 也可写dec2hex()bindec() 二进制转十进制 也可写bin2dec()decbin() 十进制转二进制 也可写dex2bin()octdec() 八进制转十进制 也可写oct2dec()decoct() 十进制转八进制 也可写dec2oct()/* 浮点数 */浮点数不能比较大小 !!!几乎所有小数,在保存时都是近似值而不是精确值!最大值:+/- 1.8E308PHP所能保存的最长小数位:14位/* 单引号字符串 */单引号字符串中,只能转义反斜杠和单引号/* 双引号字符串 */只解析字符串一次 !!!eval 把字符串作为PHP代码执行大括号包裹变量,可确定变量名界限。如:"aaa{$bbb}ccc"双引号中可以将ASCII码转换为字符"\x61" -> a // 字符串中不需0,整型中才是0x前导"\x49\x54\x43\x41\x53\x54" -> ITCAST将ASCII转成字符函数chr()将字符转成ASCII函数ord()#双引号转义列表\n 换行\r 回车\t 水平制表符\\ 反斜线\$ 美元标记\v 垂直制表符\e Escape\f 换页\" 双引号"\[0-7]{1,3} 符合该正则表达式序列的是一个以八进制方式来表达的字符 \x[0-9A-Fa-f]{1,2} 符合该正则表达式序列的是一个以十六进制方式来表达的字符 /* 定界符 */herodoc - 功能同双引号,能解析$str = <<<AAA字符串内容AAA;nowdoc - 功能同单引号,不能解析只在开始位置有单引号$str = <<<'AAA'字符串内容AAA;/* 字符串的使用 */可将字符串当作一个字符的集合来使用,可独立访问每个字符。仅适用于单字节字符(字母、数字、半角标点符号),像中文等不可用$str = "abcd";echo $str[3]; // decho $str{0}; // a/* 【类型操作函数】 *///获取/设置类型gettype($var) //获取变量的数据类型settype($var, $type) //设置变量的数据类型//类型判断is_intis_floatis_nullis_stringis_resourceis_arrayis_boolis_object is_numeric 检测变量是否为数字或数字字符串//转换成指定的数据类型boolvalfloatvalintvalstrval//强制转换类型(int)(float)(string)(bool)(array)(object)(unset) //转换为NULL(binary) 转换和 b前缀转换 //转换成二进制var_dump 打印变量的相关信息。 显示关于一个或多个表达式的结构信息,包括表达式的类型与值。 数组将递归展开值,通过缩进显示其结构。var_export($var [,bool $return]) //输出或返回一个变量的字符串表示 $return:为true,则返回变量执行后的结果print_r 打印关于变量的易于理解的信息empty 检查一个变量是否为空isset 检测变量是否存在/* 【流程控制】 *///if语句的替代语法if (条件判断) : 语句块;elseif (条件判断) : 语句块;else : 语句块;endif;//流程控制的替代语法在嵌入HTML时常用将 { 换成 : , 将 } 换成 endif; 等endifendwhileendforendforeachendswitch/* 【switch】 */switch (条件) { case 状态值1: 语句块; [break;] case 状态值2: 语句块; [break;] case 状态值3: case 状态值4: 语句块; [break;] default: 语句块; [break;]}switch是状态分支,特殊的循环先计算出状态值,再去与判断数作比较break退出流程/* 【for循环】 */for (条件初始化表达式; 条件判断表达式; 条件变化表达式) { 循环体}假设循环体被执行了N次,则条件初始化表达式被执行1次条件判断表达式被执行N+1次条件变化表达式被执行N次注意: 1. 循环变量在for语句结束后还可以继续使用,值为第一次失败的值 2. 循环变量在for循环体内可以使用 3. 任何条件表达式均可省略,但分号不能省略 a. 条件初始化表达式被省略时,循环变量被赋值为null,在与条件判断时, 进行类型转换后再比较。也可以在for语句外进行初始化。 b. 条件判断表达式被省略时,表示循环为真,进入死循环 c. 条件变化表达式被省略时,可以在循环体内完成 4. 每个表达式均可由多条语句组成,每条语句之间使用逗号分割 如果条件判断表达式由多条语句组成,都会执行,但只有最后一条语句才作为判断条件 5. for只能遍历数值型索引下标数组 数组长度函数:count() 6. 应该将可以初始化的语句均放在条件初始化表达式内,这样可以省去很多执行次数