php基础知识
2015-07-29 12:21
696 查看
1、php嵌套模式
2、php注释
3、变量
4、常量
5、php运算符与表达式
6、php流程控制
7、php常用函数
8、php数组
8、php面向对象
<?php...?><?...?><%...%><scriptlanguage="php">...</script><?=$hello?>
2、php注释
//或/*...*/或#
3、变量
1、命名规则:(1)不能以数字开头;(2)不能使用运算符+-*/;(3)可以使用关键字;(4)区分大小写;(5)变量名称一定要有意义。$aaaBbbCcc
2、$$four//可变变量,很少用
3、变量的引用赋值:$two=&$one
4、变量的类型:int,bool,float(double,real),string;array,object;resource,null
5、var_dump()//检验变量类型
6、变量的声明
$int=10;//十进制声明
$int=045;//0开头是8进制
$int=0xff;//0x开头是16进制
$float=3.14E2//3.14乘以10的二次方
$str=<<<one
……
one;//定界符声明字符串
$str=`abc`;//反引号声明的字符串
7、数据类型的强制转换:
setType($aa,int)//强制转换成整型
intval($aa);//强制转换成整型
floatval($aa);//强制转换成浮点型
stringval($aa);//强制转换成字符串
8、声明类型的变量:$a=(int)”123abc”;
9、与变量有关的函数:
isset()//判断变量是否存在
empty()//判断变量是否为空
unset()//删除变量
setType()//变量类型转换
getType()//获取变量类型
is_bool()
is_int(),is_integer(),is_long()
is_string()
is_float(),is_double(),is_real()
is_array()
is_object()
is_resource()
is_null()
is_scalar()//判断是否为标量(int,float,bool,string)
is_numberic()//判断是否是数字
is_callable()//判断是否为有效的函数名
4、常量
define("HOME","aaa");//其值只能是标量类型(int,string,bool,float)
defined("HOME");//判断常量是否存在,注意是defined,多个d
M_PI//3.14……
__FILE__//当前文件名
__LINE__//当前行
__FUNCTION__//当前函数名
__PHP__VERSION//php
5、php运算符与表达式
1、$a++,++$a,$a—,—$a的区别
2、逻辑运算符&&和||的短路问题
3、反引号:$str=`ipconfig/all`;//执行shell命令,并返回结果
6、php流程控制
1、如果判断范围用if……else……,如果单个值匹配用switch……case……
2、for,while循环;
7、php常用函数
/*时间函数*/ echo'<h4style="color:#f00">时间函数</h4>'; echotime().'<br/>';//当前时间unix时间戳 echodate("Y:m:dH:i:s").'<br/>';//当前格式化时间 /*字符串函数*/ echo'<h4style="color:#f00">字符串函数</h4>'; $word="abcdef"; echostrlen($word).'<br/>';//获取字符串长度空格也算 echoimplode("-",array(1,2,3,4)).'<br/>';//数组转换成字符串,用“-”连接 print_r(explode("-","1-2-3-4"));//字符串转换成数组以“-”分割 echo'<br/>'; echoltrim($word,'b').'<br/>';//剔除左边空格 echortrim($word,'b').'<br/>';//剔除右边空格 echotrim($word,'b').'<br/>';//剔除两边空格 echosubstr($word,0,3).'<br/>';//ab截取字符串若第二个参数为负数,则从倒数第几个开始取,但是截取规则还是从左到右 echostr_replace("b","_",$word).'<br/>';//查找与替换字符串 echostrtoupper($word).'<br/>';//小写转大写 echostrtolower('ABCDEF').'<br/>';//大写转小写 echoucfirst('abc').'<br/>';//首字母转大写,只操作首字母 echohtmlentities('<br/> ').'<br/>';//打印标签 echosubstr_count('abcdagca','a').'<br/>';//返回第二个字符串在第一个字符串中出现的次数 echostrpos('abcdagca','a').'<br/>';//查找a在第一个字符串中第一次出现的位置,第一个位置为0 echostrrpos('abcdagca','a').'<br/>';//查找a在第一个字符串中最后一次出现的位置,第一个位置为0 echostrstr('sddabdsabg','ab').'<br/>';//截取ab以后的字符串(包括ab) echostrrchr('sdfabkjkabsdf','ab').'<br/>';//截取最后一个ab以后的字符串(包括ab) echoaddcslashes("abcdefghijklman","akd").'<br/>';//查找字符串中akd,并且在前面加上\ echostr_pad('abc',10,'a',0).'<br/>';//字符串填充函数:把字符串abc左填充a到10位,0:左填充;1:右填充;2:两边填充默认左填充 echostrcmp('b','c').'<br/>';//字符串比较函数:阿克斯码值,返回10-1 echonumber_format(1235.3254,2,":",";").'<br/>';//格式化数字函数:2:保留两位小数,四舍五入::小数点用冒号表示,;:三位分隔符
8、php数组
1、数组的遍历
for($i=0;$i<count($arr);$i++){ echo"\$user[{$i}]=".$arr[$i]."<br>"; }
foreach($arras$key=>$val){ echo$key."=========>".$val."<br>"; }
while($arr=each($user)){//$user是一个数组 echo$arr["key"]."---->".$arr["value"]."<br>"; }
//list接收数组元素 list($name,$age,$sex)=array("zansan",10,"nnnnn");
2、数组的处理函数
/*常用数组函数*/更多详情http://www.shouce.ren/api/view/a/3635count($arr);//返回数组元素的个数或sizeof()
array_count_values($arr);//所有元素出现的个数返回数组
array_unique(array(0,1,2,1,2,3));//删除数组中重复元素,键值不重排,即键值不变 in_array('b',$arr);//判断b是否在数组中返回1或0 array_keys($arr);//返回数组里面的key组成新的索引数组 array_key_exists('k1',$arr);//判断k1这个键是否在数组里返回1或0 array_values($arr);//把数组转换成索引数组,键值从0开始 key($arr);//返回当前指针所指向的键值k0 current($arr);//返回当前指针所指向的元素值a each($arr)//当前指针所指向的元素和键值组成新的数组,并且指针下移next($arr);//指针下移,然后返回该指针元素值 prev($arr);//指针上移,然后返回该指针元素值 reset($arr);//指针重置,然后返回该指针的元素值a end($arr);//指针移到最后,然后返回该指针的元素值c array_push($arr,'d','e');//把d和e作为元素追加到$arr数组里,键值为索引最小数返回值为数组长度5 array_unshift($arr,'t1','t2');//把t1、t2...作为元素插入到数组的前面,键值从0开始,后面的索引键值依次增加,关联键值不便,元素顺序不变返回值为数组长度 array_pop($arr);//删除数组中的最后一个元素,返回值为最后一个元素 array_shift($arr);//删除数组中的第一个元素,返回值为第一个元素 array_pad($arr,10,"t10");//数组用‘t10’作为元素添加到10个,键值自动累计 sort($arr);//数组重新排序成索引数组,与array_values的区别是按照元素的阿克斯码排序 rsort($arr);//数组重新排序成索引数组,与array_values的区别是按照元素的阿克斯码倒叙排序 array_combine(array('a','b','c','d','e'),$arr);//改变数组的键值,元素个数必须一致 array_merge($arr,array('a','b','c'));//合并数组 array_slice($arr,2,1);//截取数组,从第3个开始取1个 array_splice($arr,2,1);//截取出来的数组然后删除原数组已经改变 json_encode($arr);//把数组转换成json格式
array_flip($arr);//数组元素顺序反过来显示
array_reverse($arr);//键值互换
func_get_args()//获取函数的参数组成一个数组 func_num_args()//统计函数参数的个数 array_filter(arrar(),fun)//用回调函数过滤数组中的元素…
array_walk(arrar(),fun)//数组中每个成员应用用户函数
array_map(fun,arrar())//将回调函数作用到给定数组的单元上
3、数组的排序(一维数组)
/** *sort按数组的value升序排序 *@Tipskeyfrom0,1...键重新排,原有数组被改变 *@returnBoolean1or0 **/ $cars=array('v'=>"Volvo",'b'=>"BMW",'s'=>"SAAB"); sort($cars); print_r($cars);//Array([0]=>BMW[1]=>SAAB[2]=>Volvo) /** *rsort按数组的value降序排序 *@Tipskeyfrom0,1...键重新排,原有数组被改变 *@returnBoolean1or0 **/ $cars=array('v'=>"Volvo",'b'=>"BMW",'s'=>"SAAB"); rsort($cars); print_r($cars);//Array([0]=>Volvo[1]=>SAAB[2]=>BMW) /** *asort按数组的value升序排序 *@Tips键不变,原有数组被改变 *@returnBoolean1or0 **/ $age=array("Steve"=>"37","Bill"=>"35","Peter"=>"43"); asort($age); print_r($age);//Array([Bill]=>35[Steve]=>37[Peter]=>43) /** *arsort按数组的value降序排序 *@Tips键不变,原有数组被改变 *@returnBoolean1or0 **/ $age=array("Steve"=>"37","Bill"=>"35","Peter"=>"43"); arsort($age); print_r($age);//Array([Peter]=>43[Steve]=>37[Bill]=>35) /** *ksort按数组的key升序排序 *@Tips键值不变,原有数组被改变 *@returnBoolean1or0 **/ $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); ksort($age); print_r($age);//Array([Bill]=>35[Peter]=>43[Steve]=>37) /** *krsort按数组的key降序排序 *@Tips键值不变,原有数组被改变 *@returnBoolean1or0 **/ $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43"); krsort($age); print_r($age);//Array([Steve]=>37[Peter]=>43[Bill]=>35)
4、数组的排序(二维数组)
<?php $arr=array( 'd'=>array('id'=>5,'name'=>1,'age'=>7), 'b'=>array('id'=>2,'name'=>3,'age'=>4), 'a'=>array('id'=>8,'name'=>10,'age'=>5), 'c'=>array('id'=>1,'name'=>2,'age'=>2) ); //方法一:自定义排序方法 functionmulti_array_sort($multi_array,$sort_key,$sort=SORT_ASC){ if(is_array($multi_array)){ foreach($multi_arrayas$row_array){ if(is_array($row_array)){ $key_array[]=$row_array[$sort_key]; }else{ returnfalse; } } }else{ returnfalse; } array_multisort($key_array,$sort,$multi_array); return$multi_array; } echo'<pre>'; print_r(multi_array_sort($arr,'id')); echo'</pre>'; //方法二:推荐方法(手册) foreach($arras$k=>$v){ $name[$k]=$v['name']; } array_multisort($name,SORT_ASC,$arr); echo'<pre>'; print_r($arr); echo'</pre>'; /** *多维数组根据value进行排序,value可能是number也可能是string */ $a=array( '001'=>array("name"=>"LHL","age"=>"25","count"=>array(2,3)), '002'=>array("name"=>"XYQ","age"=>"22","count"=>array(3,1)), '003'=>array("name"=>"aNN","age"=>"24","count"=>array(1,2)), ); //functionmy_sort($x,$y){//安装$value进行排序并且valueisnumber //return$x['count'][1]<$y['count'][1]; //} functionmy_sort($x,$y){//安装$value进行排序并且valueisstring returnstrcasecmp($x['name'],$y['name']); } uasort($a,"my_sort");//usort():外层数组的键重排 echo'<pre>'; print_r($a); echo'</pre>';
8、php面向对象
1、魔术方法:在不同时刻为了完成某一功能自动调用的方法 function__construct(){//构造方法第一个调用的方法,初始化成员属性 } function__destruct(){//析构方法对象释放前最后调用的方法 } //和封装有关的方法
__get()//获取成员属性时自动调用的方法
/*
*private$name
*通过__get()方法可以外部调用$name
*/ privatefunction__get($proName){
return$this->$proName;
}
__set()//设置成员属性时自动调用的方法
/*
*private$name
*通过__set()方法可以外部设置$name
*/
privatefunction__set($proName,$proValue){
return$this->$proName=$proValue;
}
__isset()//在类外部使用isset($p->name)判断私有属性private$name是否存在时使用
privatefunction__isset($proName){
returnisset($this->$proName)
} __unset()//删除私有成员的时候自动调用的方法 privatefunction__unset($proName){
unset($this->$proName);
}
__call()//调用类中不存在的方法时调用该方法
function__call($nethoName,$args){
echo“你调用的方法{$methoName}参数”;
print_r($args);
echo“不存在”;
}
__toString()//echo$p=newclassName使之返回一个字符串
function__toString(){
return“string”;