标签:释放 use 索引 无法 加载 bsp break 开源 网页
①<?php?> 这个最好哦
②<script language="php"></script>
③<? ?>
④<% %>
①:php中的变量必须使用$开头!!
②:php是一种弱类型语言,变量无需声明,直接给变量赋值即可,并且可以再后续赋值过程中,随时修改变量的数据类型
③:php中可以使用连等声明多个变量,而且一定不能用,分割。
eg:$a=$b=$c=10;
1 Boolean:true为真false为假;
2。 Integer类型,0为假,非0为真
3. 浮点型 0.0为假,非0.0为真
4.字符串类型 "" "0"为假,其余全为真
5 。Array类型,空数组为假,非空为真
6 Object类型:全为真;(只有PHP4版本中,空对象为假)
7 NULL类型 全为假。
8 Resource类型:全为真。
① ‘‘;
② "";
③<<<(定界符); $str=<<<s(定界符开始)
//定界结束符必须顶格写, 而且一行中不能有任何其他内容,包括空格;
//定界标识符可以是任何字母,只要保证开始符和结束符一致即可;
s;(定界符结束)
④三种声明方式的区别:
a:‘‘中不能解析变量,而双引号可以解析变量。
注意:双引号中,如果解析变量,需要将变量与后面内容隔开,或者用{}包裹。
eg:"haha{$num}haha" "haha${num}haha" 两种写法均可
b: ‘‘中不能使用转义符(除了\\和\‘之外)双引号中可以使用所有转移符;
c ‘‘中可以有双引号,双引号中可有单引号,但是不能包裹同类型引号
d 定界符所有功能,与双引号相同.(但是,定界符中还可以有双引号)
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():判断是否是有效的函数名
1continue:跳出本次循环继续进行下一次
2 break 跳出本层循环,继续执行循环后面的的语句,
php中,continue和break后面可以接数字表示跳过几层循环或者switch,
3 return 结束当前函数,并返回值,如果没有函数包裹,return也能终止当前脚本,但是一般不使用return终止脚本
4 exit()die():结束当前脚本,并且打印一句话
exit("再见");
函数的声明与使用:
1、标识符:程序中各变量名、属性名、方法名、函数名、类名统称为标识符
①:标识符的命名要求
只要是标识符,命名只能有字母数字下划线组成,开头不能是数字
②:标识符的命名规范:
类名:要符合“大驼峰法则”。每个单词的首字母全部大写!PersonName
其他标识符,符合“小驼峰法则”,首字母小写,之后每个单词的首字母大写 myNameIsJredu
或者“匈牙利命名法”所有字母小写,单词之间用下划线分割。my_name_is_jredu
函数名的要求:
①:函数名也是标识符之一,符合标识符的要求与规范
②:函数名不区分大小写
③:函数名与已有函数名重复,不能与系统内置函数名重复
④:bool function_exists(String funName);用于检测函数名是否存在
1 局部变量:声明在函数内部的变量,称为局部变量,只能在函数内部使用,如果要在外部使用,使用return关键字将函数返回
2声明在函数外面的变量称为全局变量
3 注意:php中,全剧范围不能访问局部变量,局部范围也不能访问全部变量
如果要在函数中使用全局变量,则需要使用global关键字将全局变量引入
函数中如果需要有变量与全局变量重名,global语句之上,使用局部变量,global语句之下,使用全局变量
4 GLOBALS[] 全剧数组
$GLOBALS[]数组是php中的全局数组,可以直接给数组添加键和值,无论在函数内外声明,均可以在任何地方使用;
eg:$GLOBALS[‘name‘]="jianghao";
//无论哪里声明,在任何地方均可使用$GLOBALS[‘name‘]
5 函数中需要使用局部变量使用全局变量,还有一种方式,叫做【函数传参】,可以将全局变量通过函数的参数传入,但是传进来的参数是函数的形参,也就是
函数内部的局部变量,这个变量与全局变量实际上是2个变量,内部改变,全部变量不会变;
如果需要在函数内部改变全局变量,可以将形参声明为取址形式
function func($a1,&$a2){} //函数内修改a1,全局的a1不会改变,函数内修改a2,函数的a2也会改变
注意:如果函数的形参为取址形式,则调用时必须传入变量,而不能是字面量,例如上面的函数调用, func($a1,$a2);√ func($a1,2)×
因为字面量,不能内存中的变量,无法取地址。
6 php中子函数也无法使用父函数中变量。
如果子函数要使用父函数的变量,可以将子函数作为变量函数使用, 同时配合use关键字将父函数的变量传入子函数;
function func(){
$a=10;
$func=func() use($a){
echo $a;
}
}
use关键字只能配合变量函数使用,可以将子函数作为函数的表达式使用,同时匹配合use关键字将父函数的变量传入子函数
在php中如果有参数的传递,实参只能比形参多,不能比形参少!!
①:常规参数传递: function func($a){} func(123);
2 引用参数传递 : function func(&$a){} func($b) ;
①:通过&传递进来的是实参的地址,所以函数内部改变形参,外部的实参也会改变
②:如果形参为引用参数,那么实参必须是变量,而不能是字面量,因为字面量没有地址!!(func10); ×
3 默认参数传递: function func($a,$b=10){} func(12);
//$b可以不传,默认为10;
注意:如果参数中有默认参数,拥有非默认参数,则需要将所有的非默认参数放在后面,所有的默认参数放在后面
4可变参数传递,由于php中实参可以比形参多,那么,传递进函数的参数可以通过php的内置函数取到相关数据
func_get_args();返回数组的格式,去到所有的实参列表
func_num_args();返回实参列表总个数,count(func_get_args());
func_get_arg(0);传入index,取到第几个参数 func_get_args()[0]
例如:
function func3($a,$b=10){ $arr=func_get_args(); var_dump(func_get_args()); var_dump(func_num_args()); var_dump(func_get_args(0)); var_dump(count($arr)); } func3();
1 将一个函数名,作为一个字符串,赋值给一个变量,这个变量,就是我们所说的变量函数,可以直接使用()调用变量函数。
function func(){}
$a="func";//$a就是变量函数
$a();
function func4(){ } $func4=func; $func4(); var_dump($func4);
function filter($start,$end,$func){ for($i=$start;$i<=$end;$i++){ if($func($i)){ echo "{$i}<br>";
//传参,for循环 } } } // filter(1,100); filter(1,100,function($a){ if($a%5==0 && $a%3!=0){ return true; }else{ return false; } }); function func2($a,$b){ } func2(1,2,3,4); function func(){ $a=0; static $a=0; echo $a; $a++; } func(); func(); func(); func(); func(); func();
由于变量函数,存在两种调用方式,例如func() $func()
无法保证调用方法的统一,所以,变量函数通常使用匿名函数的方式进行
$func1=function(){};
!!!注意使用匿名函数表达式,最后的分号一定不能省略!
匿名函数。本身也是变量,用var_dump检测,是Object类型;
$func1=function(){};
var_dump($func1);
看看打印后返回什么:
我们来做一个练习题吧!求取10以内的数阶乘:
function func($num){ static $jie=1;
//static叫做静态变量
使用static关键字声明的变量,称为静态变量,static $a=0;
静态变量的特点:
①:静态变量在函数第一次加载时进行声明;
②:静态变量在函数调用完成后,不会被释放,静态变量在整个脚本执行完成后;释放变量
③:同一个函数多次调用,共享同一个静态变量
if($num>0){ $jie *= $num; $num--; func($num); } return $jie; } var_dump(func(10));
按照下标的不同,php中的数组分为关联数组和索引数组
索引数组,下标为整数类型,从0开始,依次增长;
关联数组,下标为字符串类型,每个下标的字符串与数组中的值一一对应(类似对象中的键值对)
关于关联数组跟索引数组
①:同一个数组中,可以同时存在关联项和索引项
array(1,2"name"=>zhangsan)
②:如果数组中同时存在关联项跟索引项,则索引下标会去掉关联项后,默认增长(关联项不占索引位)
array(1,2,"name"=>zhangsan,3,4);//1,2,3,4的下标依次为0,1,2,3
arr=[];//字面量方式声明数组从php.4开始支持
③:如果关联项的key是十进制的整形,则会将此数字转为索引下标,
("10.0","08"等格式,不会转为索引下标仍然为关联数组)
$arr4=array(1,2,"name"=>"zhangsan","5"=>3,"07"=>4);//1,2,3,的下标依次为0,1,5
4依然为关联项,key为"07"
④:如果手动指定索引下标,则后续索引的增长,将从指定的最大下标开始
array(1,2,"name"=>"zhangsan","5"=>3,4);//4的下标为6
⑤:如果手动指定索引项的下标,或关联项的key与前面的已有下标混合或者key重复,则后指定的会覆盖前面指定的
array(1,"name"=>"zhangsan","0"=>3,"name"=>4);
//数组最终第0项为3,name=>4
写法:
//索引数组
$arr=[];
$arr1=array(1,2,3,4,5,6);
var_dump($arr1);
print_r($arr1);
//关联数组,用=>表示键值对的关联
让我们用几个栗子来验证以上学法是否正确:
$arr2=array("name"=>"zhangsan","age"=>14,"sex"=>"男"); var_dump($arr2);
echo $arr2["name"];
$arr3=array(1,2,"name"=>"zhangsan",3,4); var_dump($arr3);
//如果数组中同时存在关联项跟索引项,则索引下标会去掉关联项后,默认增长!!符合上述第二条
$arr4=array(1,2,"name"=>"zhangsan","5"=>3,"07"=>4); var_dump($arr4);
//如果关联项的key是十进制的整形,则会将此数字转为索引下标,
("10.0","08"等格式,不会转为索引下标仍然为关联数组)
所以:$arr4=array(1,2,"name"=>"zhangsan","5"=>3,"07"=>4);//1,2,3,的下标依次为0,1,5
$arr5=array(1,2,"name"=>"zhangsan","5"=>3,4); var_dump($arr5);
//如果手动指定索引下标,则后续索引的增长,将从指定的最大下标开始
array(1,2,"name"=>"zhangsan","5"=>3,4);//4的下标为6
$arr6=array(1,"name"=>"zhangsan","0"=>3,"name"=>4); var_dump($arr6);
如果手动指定索引项的下标,或关联项的key与前面的已有下标混合或者key重复,则后指定的会覆盖前面指定的
array(1,"name"=>"zhangsan","0"=>3,"name"=>4);
//数组最终第0项为3,name=>4
使用Array()声明:但是没有new关键字
$arr=array(1,2,3);
使用字面量[]声明,这种声明从php5.4开始支持
$arr=[1,2,3];
直接赋值声明:php中数组,可以直接使用$arr[]=n;在数组中最后追加一个值,类似push方法。
追加的值的下标,与前面的要求一样,按照下标最大值进行递增
$arr[]=1; $arr[]=2; $arr[8]=3; $arr[]=4; $arr[4]=5; $arr[]=6; var_dump($arr); //数组下标的读取,php中数组下标的读取,支持使用[]和() var_dump($arr[0]); var_dump($arr[8]);
$arr[]=1;
$arr[]=2;
$arr[8]=3;
$arr[]=4;
$arr[4]=5;
$arr[]=6;
var_dump($arr);
//数组下标的读取,php中数组下标的读取,支持使用[]和()
var_dump($arr[0]);
var_dump($arr[8]);
$class=[ "name"=>"h51705", "count"=>"28", "grounp1"=>array("zhangsan","lisi","wangermazi"), "grounp2"=>array("zhangsan","lisi","wangermazi"), "grounp3"=>array("zhangsan","lisi","wangermazi"), "grounp4"=>array("zhangsan","lisi","wangermazi"), "grounp5"=>array("zhangsan","lisi","wangermazi") ]; var_dump($class);
[使用for循环便利数组]
count($arr);函数用于统计数组中的元素个数
for:循环只能用于便利索引数组,如果包含关联数组,则count()会统计两种数组的总个数,到时for循环时会出现“数组下标越界”的错误
$arr=[1,2,3,4,5,"name"=>"张三"]; for($i=0;$i<count($arr);$i++){ echo $arr[$i]."<br>"; }
2 foreach便利数组
foreach可以便利任何类型的数组!!
$arr1=[1,2,3,4,5,"name"=>"张三"]; foreach($arr1 as $item){ echo "{$item}<br>"; } $arr1=[1,2,3,4,5,"name"=>"张三"]; foreach($arr1 as $key=>$value){ echo "{$key}=>{$value}<br>"; }
list():用于将数组中的每一个值赋给list函数的每一个参数。(list函数的参数个数,不能大于数组中元素的个数)
eg: list($a,$b,$c)=$arr;
--->$a=1; $b=2; $c=3;
注意:①:list()在解析数组的时候只能解析索引数组;
②:list()可以通过索引参数选择性的解决数组的值;
list($a,$b,,$c)=[1,2,3,4];==>$c=4
$arr=[1,2,3,4]; list($a,$b,$c,$d)=$arr; echo $a."<br>"; echo $b."<br>"; echo $c."<br>"; echo $d."<br>";
each():函数的作用
each():用于返回数组当前的指针所在的位的键值对,并将指针后移一位;
"返回值":如果指针有下一位,则返回一个数组,数组包含一对关联项
("key"--键 "value"--值)和一个索引项(0--键 1--值)
如果指针没有下一位,返回false
$arr1=["name"=>"zhangsan",2,3,4]; // each ($arr1); var_dump(each($arr1)); var_dump(each($arr1)); var_dump(each($arr1));
使用while循环,配合each进行便利
while($a=each($arr1)){ echo "{$a[0]}==>{$a[1]}<br>"; echo "{$a[‘key‘]}==>{$a[‘value‘]}<br>"; } reset($arr1);//将数组指针恢复到最初位置 while(list($key,$value)=each($arr1)){ echo "{$key}==>{$value}<br>"; } reset($arr1); var_dump($arr1);
标签:释放 use 索引 无法 加载 bsp break 开源 网页
原文地址:http://www.cnblogs.com/scd903686521/p/7705294.html