数组分类
- 索引数组:索引值为整数的数组
- 关联数组:索引值为字符串的数组,使用字符串作为索引,这使得编程更加人性化,这在其他编程中非常少见,但是在php中会被大量使用在开发过程中,使用起来极其方便
名字如果取的是整形:那么这个数组就是索引数组
名字如果是字符串类型:那么这个数组就是关联数组
比如:
0 name "李广"
1 grade 90分
2 sex 男
3 height 173cm
索引数组 关联数组
数组创建
php中创建数组非常灵活,与其他编程语言不同的是php不需要创建数组时指定数组大小,甚至不需要在使用数组前声明,也可以在一个数组中存储任何类型的数据
- 直接为数组元素赋值即可创建
$变量名[索引值]=数据内容;
索引值可以是整数也可以是字符串,也可以不写(默认为索引数组)
- 使用array( )语言结构创建数组
$变量名=array(key1=>value1,.......) ;
//索引数组
$student[0]=10;
$student[1]='ROBIN.FANG';
$student[2]=true;
$student[3]=60.5;
//输出数组具体内容需要函数 print_r($studnet)或者var_dump($student);
//索引数组
<?php
$student= array(10,'ROBIN.FANG',true,60.5);
var_dump($student);
?>
//索引数组
<?php
$student 1=array(
0=>10,
1=>'ROBIN.FANG',
2=>true,
3=>60.5
);
?>
//关联数组
<?php
$student1['num']=10;
$student1['name']='ROBIN.FANG';
$student1['sex']=true;
$student1['grade']=60.5;
var_dump($student1);
echo $student[1]; //ROBIN.FANG
?>
索引数组和关联数组都有两种数组写法,可以直接为数组赋值创建数组或者用array()结构创建数组
//关联数组
<?php
$student=array(
"number"=>10,
"name"=>"robin",
"sex"=>true,
"grade"=>55
);
var_dump($student);
?>
//数组中可以再放数组(二维数组)
//可以将很多学生的信息放在一个变量里,每个学生是一个数组
<?php
$students=array(
0=>array(1,"ROBIN.FANG",true,60.5),
1=>array(2,"David",true,88),
2=>array(3,"Mina",false,80)
);
?>
//输出二维数组的单独元素用 echo $student[0][1]
遍历数组
php中很少需要自己动手将大量的数据赋值到数组变量中,而是通过调用其他函数返回结果集,这些结果集很多情况下都是数组类型,使用数组类型返回的目的是将相互关联的数据组织在一起形成集合,以方便批量处理,所有实际工作中数组遍历需求较多
echo count($arr); //获取数组元素的个数
echo count($arr,1); //获取多维数组的元素个数
//一维数组遍历
$arr=array('a','b','c','d','e','f');
for($i=0;count($arr);$i++){
echo $arr[$i].'<br/>';
}
//多维数组遍历
$arr1=array(
array(1,2,3),
array(4,5,6)
)
echo count($arr1,1); //2+6=8
关联数组的遍历方法:
- for循环:用的较少,因为有缺陷
- foreach(数组变量 as 变量){
每次循环执行的语句,变量1代表当前正在经历的数据}
$arr1=array(
'name'=>"ROBIN.FANG",
'num'=>10
);
foreach($arr1 as $value){
echo $value.'<br/>';
}
foreach(数组变量 as 变量1=>变量2){
每次循环执行的语句
变量1代表当前正在经历的数据的索引值
变量2代表当前正在经历访问的数据
}
foreach($arr1 as $key=>$value){
echo $key."=>".$value.'<br/>';
}
特殊情况:
//无规律的二维数组
$arr=array(
'a',
'b',
'c',
'd',
array(
1,2,3,4,5
)
);
//此问题用递归思想解决
foreach($arr as $val){
var_dump($val);
}
//有规律的二维数组
<?php
$arr=array(
array('a','b','c','d'),
array('a','b','c','d','e','f'),
array('a','b','c','d','f'),
array('a','b','c','d')
);
foreach($arr as $val1){
foreach($val1 as $val2){
echo $val2.'<br/>';
}
}
?>
非常有规律的数组(格式是固定的)
<?php
$student=array(
array('ROBIN',1,true,77),
array('Jack',2,true,89),
array('Mina',3,false,82)
);
echo'<table border=1>';
foreach ($students as $val1){
if($val[2]==true){
$val[2]='男';
}
else{
$val[2]="女";
}
echo"<tr><td>{$val[0]}</td><td>{$val[1]}</td>
<td>{$val[2]}</td><td>{$val[3]</td></tr>}";
}
echo"</table>";
?>