1.定义
数组的元素本身仍然是数组的数组成为二维数组,可以把二维数组当成一个矩阵,或者是一个具有宽度和高度或者行和列的网格。一维数组只在一行或者一列上显示,二维数组则像网格一样有好几行和好几列。
2.创建一个简单的二维数组
// 第一种方式
$students = array(
array('aaa',18,'man'),
array('bbb',19,'woman'),
array('ccc',17,'man')
);
print_r($students);
打印结果:Array
(
[0] => Array
(
[0] => aaa
[1] => 18
[2] => man
)
[1] => Array
(
[0] => bbb
[1] => 19
[2] => woman
)
[2] => Array
(
[0] => ccc
[1] => 17
[2] => man
)
)
// 第二种方式
$x=2;
$y=3;
$a=array_fill(0,$x,array_fill(0,$y,array()));
print_r($a);
打印结果:Array(
[0] => Array
(
[0] => Array
(
)
[1] => Array
(
)
[2] => Array
(
)
)
[1] => Array
(
[0] => Array
(
)
[1] => Array
(
)
[2] => Array
(
)
)
)
3.打印内外数组长度的方法
$students = array(
array('aaa',18,'man'), //第0行
array('bbb',19,'woman'), //第1行
array('ccc',17,'man') //第2行
);
echo count($students); //打印外数组长度的方法,即student的长度,是里边的三个数组,结果是3,这个是外层的数组student的个数。
// count($students);通俗地讲是二维数组的行数
echo count($students[1]); //3
echo count($students[2]); //3
echo count($students[0]); //打印内数组的长度的方法,即student的第1个元素的长度,结果是3
4.打印数组元素的方法
- 没有键的情况
$students = array(
array('aaa',18,'man',), //第0行
array('bbb',19,'woman','green'), //第1行
array('ccc',17,'man','red') //第二行
);
//打印二维数组的第一种方法,此方法很麻烦,适合下标为0,1,2...的情况
echo $students[0][0]."|".$students[0][1]."|".$students[0][2]."
";
echo $students[1][0]."|".$students[1][1]."|".$students[1][2]."
";
echo $students[2][0]."|".$students[2][1]."|".$students[2][2]."
";
//打印数组的第二种方法:for循环,两重循环打印二维数组
for ($i=0; $i < count($students); $i++) {
for ($j=0; $j < count($students[$i]); $j++) { //这里用$i的原因:就算内层数组里元素的个数各不相同也可以打印的出来
echo $students[$i][$j]."|";
}
echo "
"; //外层循环3次,每次加1个换行
}
结果:
aaa|18|man
bbb|19|woman
ccc|17|man
aaa|18|man|
bbb|19|woman|green|
ccc|17|man|red|
- 有自定义键的情况
$students = array(
array('name'=>'aaa', 'age'=>18, 'sex'=>'man',), //第0行
array('name'=>'bbb', 'age'=>19, 'sex'=>'woman', 'color'=>'green'), //第1行
array('name'=>'ccc', 'age'=>17, 'sex'=>'man', 'color'=>'red') //第二行
);
// print_r($students);
//第一种方法:foreach
for ($i=0; $i $value) { //输出第0,1,2行的键和值
echo $key."--".$value."|"; //每输出一次键值打印一个|
}
echo "
"; //每输出一行打印一个换行
}
//第二种方法:list和each
for ($i=0; $i ";
}