三、复合数据类型
3.1数组
- 索引数组
$stu=array(‘tom’,’amy’,’lili’);
echo $stu[1];//amy
- 关联数组
$stu=array(‘name’=>’大白’,’sex’=>’man’,’age’=>100);
echo $stu(‘name’);//大白
- extract()数组转变量
extract($stu);//$name=’大白’;$sex=’man’;$age=100;
- 二维数组
$ep=array(
‘name’=>’木子’,//这里不是$ep[0]
array(‘aaa’,’bbb’,’ccc’),//这里是$ep[0]
array(‘第一’,’第二’,’第三’),
);
echo $ep[0][2];//ccc
ech0 $ep[1][0];//第一
3.2对象
3.3特殊类型
- 资源:$mysql_connect(‘localhost’,’root’,”); $fopen(‘./index.php’,’rw’);
- NULL\null
3.4 数组指针的操作
- key():从关联数组中取得键名,没有取到返回NULL。
- current():返回数组中的当前单元
- next():将数组中的内部指针向前移动一位
- prev():将数组的内部指针倒回一位
- reset():将数组的内部指针指向第一个单元
- end():将数组的内部指针指向最后一个单元
- foreach(数组 as 键=>值){//循环体}
- each()遍历数组
- each()=key()+current()+next()
- 1.1 list()把索引数组中的值赋给一些变量 $y=array(‘aaa’,’bbb’);list($t,$n)=$y;echo $t,$n;//aaa bbb
3.5数组排序
- sort() – 对数组进行升序排列
- rsort() – 对数组进行降序排列
- asort() – 根据关联数组的值,对数组进行升序排列
- ksort() – 根据关联数组的键,对数组进行升序排列
- arsort() – 根据关联数组的值,对数组进行降序排列
- krsort() – 根据关联数组的键,对数组进行降序排列
四、函数
$fu=function(){……};
function fn(){……}
function_exists():判断函数是否存在function_exists(‘fu’);
默认情况下,函数的值都是值传递,在定义函数的时候前面的参数上加上取地址,表示传递的是变量的地址
function(&$args){}//传址
func_num_args():获取参数的个数
func_get_args():获取传递的所有参数并转成数组
- 全局变量:在函数外部的变量
- 局部变量:在函数内部的变量
- 超全局变量:在函数的内部和外部使用。
在javascript中,局部变量只能在函数内部使用,全局变量在函数内部和函数外部使用。
函数内部声明全局变量
function fun(){$GLOBALS[‘quanju’]=100; globale $quanju2;$quanju2=10}
fun();
echo $quanju;//100
echo $quanju2;//10
静态变量只能被初始化一次 function fun(){static $x=100;echo ++$x;}fun();//101fun();//102
use()可以将匿名函数外的变量引入到匿名函数内部
练习:
生成验证码字符串
$a=array_merge(range(‘a’,’z’),range(‘A’, ‘Z’),range(0, 9));
$b=array_rand($a,4);
shuffle($b);
$str=”;
var_dump($b);
foreach ($b as $i) {
$str.=$a[$i];
}
echo $str;