参考链接:https://www.cnblogs.com/liuyongqi/p/6942996.html
1,php中文网:http://www.php.net/manual/zh/
2,php插入到html中:只要php代码使用 php ?>包裹,都可以嵌入到html中;
3,变量使用$开头,eg: $obj=3;
4,php的内置函数不区分大小写:ECHO和echo是一个意思;但是变量区分;
5,①PHP支持8种数据类型:
4种标量类型:布尔型Boolean 整形integer 浮点型float/double 字符串string
2种复合类型:数组Array 对象Object
2种特殊类型:资源Resource 空null。
②整形的范围从-2^32~-2^32-1,超出这个范围,自动转为浮点型。
6,PHP中算false的情况
Boolean false
整形 0
浮点型0.0
字符串"" "0"("0.0" "0000"都算对)
空数组
空对象只在PHP4版本false,其他版本都算true。
Null和尚未定义的变量
所有资源都算对!!(除PHP4,所有对象也算对)
7,php中定义字符串:
使用单引号:' hi '
使用双引号:" hi "
使用界定符:<<< this is my jack
④三种方式的区别:
a:定界符功能默认与双引号相同。定界符中可放双引号。
b:单引号中,不能解析变量。而双引号、定界符都可以解析变量。
注意:双引号中解析变量时,变量名应使用空格分隔,推荐使用{}包起来。
c:各引号中可互相套用,但是不能放与自身相同的引号。
d:单引号中,不能使用转义字符(但是除了'本身,转义字符\本身),双引号中,可以使用转义字符。
9,类型转换:
自动类型转换:表示运算的时候,Boolean、Null、String等类型,会自动转为integer或float类型。
Null——>0
true——>1
false——>0
string——>转非数值前的数字,没有转为0
强制类型转换:强制将变量转换为其他类型的变量;settype($name, "number"); //(int ,integer ,bool ,boolean,float,double,string array object)
10,【PHP判断变量类型的测试函数】
is_bool():判断是否是布尔型
is_int()、is_integer()和is_long():判断是否为整型。
is_float()、is_double()和is_real():判断是否为浮点型
is_string():判断是否为字符串
is_array():判断是否为数组
is_object():判断是否为对象
is_resource():判断是否为资源类型
is_null():判断是否为null
is_scalar():判断是否为标量
is_numeric():判断是否是任何类型的数字和数字字符串
is_callable():判断是否是有效的函数名
11,【PHP中的输出语句】
echo "……";输出变量的值。
var_dump(num);输出变量的数据类型和值[和一些其他信息]。
print_r();专用于打印数组。
12,常量:
13,逻辑运算符:
and/&& or/|| not/! xor(异或)其他运算符:
``:调用系统都是环境下的命令行并执行,但是由于安全性以及跨平台性,我们并不提倡使用:eg:`ipconfig`
@:错误信息控制符。可以临时屏蔽掉一些小的错误信息。但是不提倡使用!
=>:数组下标指向
->:对象
14,【可变变量】
在一个 变量名前边,再加一个$符号。即可将第一个变量的值,作为新变量的名字。
$hello="hello1";
$$hello="world";//$hello1
$$$hello="liu";//$world&:取址符号。变量名前加&符号,取到当前变量的引用地址(变量在内存中的地址)。
$num2=&$num1;//取出num1的地址给num2,
15,流程控制语句:
exit(mixed 结束语)/die(mixed 结束语)函数:直接结束当前的PHP脚本!如果有参数传入,则先打印出结束语,然后结束当前脚本。
16,函数定义:不区分大小写;
function new1(){ } 和 function NEW1(){ }一个意思;
17,函数作用域:
局部变量:函数内;全局变量:函数外;
但是php中有两个限制:1,局部作用域不可以访问全局作用域中的变量;2,全局:作用域不可以访问局部作用域中变量;
解决问题1:在局部作用域中将要使用的全局变量前加global,即可调用。
$a=10; function new(){ global $a; echo $a; }
或者:$a=10; function new2() { echo $GLOBALS[' a' ]; } //注意:一定要大写;
或者:通过给函数传参,可以在函数内部使用过全局变量;但是,传递以后的参数是函数的局部变量,内部改变,外部不会变;
除非,传递的参数是地址function func($a1,&$a2){ }
注意:通过方法一来使用全局变量$a,实际上是建立了一个新的引用,所以如果使用unset($a),这个时候是不会销毁变量的。如果将方法一代码的"//unset($a);"解注释后运行,仍然能输出正确的结果。但是$GLOBALS['a']仅仅是是全局变量的的另一种语法形式,并没有建立新的引用,所以,如果解注释方法二中的"//unset($GLOBALS['a']);",程序将无法正常运行
18,静态变量:在函数第一次加载的时候声明,再次加载函数不再声明;
function s(){
static $a=1;
$a++;
echo $a;
}
s(); // 1
s(); //2而不是1;
19,必须:函数的实参>=形参数量;
func_get_args()//取所有参数列表(数组)
func_num_args()//返回参数的总个数,相当于count(func_get_args());
func_get_arg(0)//根据下标,取每个参数;相当于func_get_args()[0];
function aa(){
echo func_num_args ; //5
}
aa(1,2,3,4,5);
20,回调函数:函数B作为函数A的参数,B是回调函数;
21,匿名函数:$a=function(){ };
22,引入外部文件夹到当前文件:
include和require的区别:
一般,当用于在文件最上方导入某些文件时,使用require导入,如果导入失败,则不执行文件;
而如果是在某些分支条件中,导入某些操作,使用include导入,即使导入失败,不影响后续代码执行;
include_once和require_once表示:文件只能导入一次。如果多次调用函数,则后面的语句会判断文件是否导入,再决定是否导入新文件(效率优化问题,不推荐)
include ("funcText.php");
require ("funcText.php")
23,数组:索引数组,关联数组;
定义:$arr1=array[1,2,3,4,5,6,7,8]; //索引数组
$arr2=array[ "one"=>1, "two"=>2, "lala"=>3]; //关联数组,有点类似键值对的意思;
读取:$arr1[0]; $arr2["two"];
遍历:count($arr)用来统计数组元素个数;
for($i=0;$i<$num;$i++){ //for只能遍历索引数组;
echo $arr[$i] ;
}
或者:foreach($arr1 as $item){ //foreach可以遍历任何种类数组;
echo $item ;} // 1,2,3,4,5,6,7,8一定是$item
或:foreach($arr2 as $key=>$item){
echo $key ; echo $item } //one, two ,lala ; 1,2,3
24,php的超全局变量(数组):就是php中内置的变量,不需要我们再定义的。
$_GET: 获取前台get方式提交的参数;
$_POST: 获取前台post方式提交的参数;
$_SERVER: 获取服务器变量;
$_EVN: 获取环境变量;
$_FILES:通过 HTTP POST 方式上传到当前脚本的项目的数组。
$_COOKIE:获取当前页面cookie信息
$_SESSION:取到保存在session中的信息。
$GLOBALS包含了上述所有全局数组,可以通过$GLOBALS["$_SERVER"]取到$_SERVER;