创建数组
$var = array( 'Hello', 'World'); $var = [ 'Hello', 'World'];
创建数组可以使用$var = []
或$var = array()
两种方式。 数组中每个值都对应一个键(下标),默认从0开始。
关联数组
关联数组要自定义键(下标),使用=>
链接符号 '键(下标)' => '值'
$var = ['name' => 'James','age' => '35','position' => 'SF'];
输出数组可以使用print_r
,可以把数组中所有的值打印出来:
print_r($var);//Array ( [name] => James [age] => 35 [position] => SF )
访问数组数据
如果要访问数组中单独一个键的值,可以使用数组['键(下标)']
,来索引数组的值输出
$var = ['name' => 'James','age' => '35','position' => 'SF'];echo $var['age'];// 35
定义二维数组
$players = [ [ 'name' => 'James', 'age' => '35', 'position' => 'SF' ], [ 'name' => 'Allen', 'age' => '38', 'position' => 'SG' ], [ 'name' => 'Griffin', 'age' => '32', 'position' => 'PF' ]];
访问多维数组的数据时,先调用数组$players
,再找到下一层数组的键(下标),['skills']
,再用同样的方法找到数组的键值对。
数组+['键(下标(数组))']+['数组中的键值']
二维数组循环
foreach ($players as $v) { echo '姓名' . $v['name']; echo '<br>'; echo '年龄' . $v['age']; echo '<br>'; echo '位置' . $v['position']; echo '<br>'; echo '<hr>'; }
定义三维数组
$players = [ [ 'name' => 'James', 'age' => '35', 'position' => 'SF', 'skills' => [ 'score', 'rebound', 'dribbble', 'organization' ] ], [ 'name' => 'Allen', 'age' => '38', 'position' => 'SG', 'skills' => [ 'score', '3point', 'dribbble' ] ], [ 'name' => 'Griffin', 'age' => '32', 'position' => 'PF', 'skills' => [ 'defence', 'rebound', 'score' ] ]];print_r($players[1]['skills'][2]);
访问三维数组方式与二维数组方式相同,找到嵌套数组的键值后面接索引就可以调用嵌套数组的值了。$players
调用数组,[1]
键值找到第二个嵌套数组,['skills']
,键值找到第三个嵌套数组,[2]
第三个嵌套数组的第三个值。
三维数组循环
foreach($players as $v){ echo '姓名:'. $v['name'].'---'; echo '年龄:'. $v['age'].'---'; echo '位置:'. $v['position'].'---'; echo '技能:'; foreach($v['skills'] as $skill){ echo $skill.'-'; } echo '<hr>';}
不规则数组循环输出
以上二维三维数组循环输出都是规则数组,每个数组的数据排列都是相同的,那么在不同排列数据的数组中应该怎么输出?
$players = [ 'name' => 'James', 'age' => '35', 'position' => 'SF', 'skills' => [ 'score', 'rebound', 'dribbble', 'organization' ]];
以上是一个不规则二维数组,如果正常使用foreach
,则嵌套数组skills
不会被输出,这个时候需要用到判断:
foreach($players as $v){ if(is_array($v)){ foreach($v as $value){ echo $value. ' '; } } else{ echo $v; echo '<br>'; }}
因为$players
数组中有一个键值对[skills]
是数组,其他都是数值,所以每次循环的时候都要判断一下该键指向的是数组还是值,如果是数组,则再次循环该数组内的键值对。
总结
1.数组中每个存储的数据都对应一个键(下标),通过该键(下标)可以索引数组内的值。
2.关联数组可以自定义键(下标),需要使用数组连接符 'key' => 'value'
。
3.多维数组数据访问通过数组键(下标),依次查找。
4.foreach
循环参数($数组 as $键 => $值)
,如果没有键 ($数组 as $值)
,值的名字是自定义形参,指向的是每个从数组键[0]
到结束的值。
5.不规则嵌套数组,可以用if(is_array($值))
,先判断该键存储的是值,还是数组,如果是数组,再执行foreach()
循环该嵌套数组。