通过前面的学习我们知道了,PHP中的数组可以储存所有类型的数据,其中当然包括了数组本身。这时候当一个数组中的元素就是另一个数组是,这个构成包含数组的数组应该怎样称呼,当这个被包含的数组内的元素还是一个数组的时候,我们又要怎么处理呢?
数组简单来说就是一种数或者简单的列表,有时候我们希望用一个以上的键来保存数据,这时候就需要用到我们刚才说到的那种包含的数组了,这样的就被称为多维数组,接下来我们一起来看一下多维数组的相关知识吧。
二维数组
上文中我们说了,当一个数组中的元素就是另一个数组的时候,这个构成包函数组的数组就是二维数组,二维数组简单地理解为数组的数组。那它的声明方式和普通的数组有没有区别呢?
二维数组和一维数组的的声明方式是一样的,只是将数组中的一个或者多个元素也声明成了一个数组,同时也有直接为数组元素赋值和使用array() 函数两种声明二维数组的方法。
下面我们通过示例来看一下使用直接为数组元素赋值的方式来声明一个数组,示例如下:
<?php $array[0]['name'] = 'father'; $array[0]['year'] = '1949'; $array[0]['age'] = '72'; $array[1]['name'] = 'mother'; $array[1]['year'] = '1949'; $array[1]['age'] = '72'; echo '<pre>'; print_r($array); ?>
输出结果:
在上述示例中,这是使用了直接为数组元素赋值的方式来声明了一个数组,接下来我们看一下通过array()
函数来声明一个二维数组的情况,示例如下:
<?php $array = array( array('name'=>'father','year'=>'1949','age'=>'72'), array('name'=>'mother','year'=>'1949','age'=>'72') ); echo '<pre>'; print_r($array); ?>
输出结果与上述示例中的输出结果一致。
声明了一个二位数组后,想要获取其中的元素也是很简单的,和一维数组也是类似的,只需要注明每个维度的下标就行了。
接下来我们通过示例来看一下怎样获取二位数组中的元素,示例如下:
<?php $array = array( array('name'=>'father','year'=>'1949','age'=>'72'), array('name'=>'mother','year'=>'1949','age'=>'72') ); echo '<pre>'; print_r($array); echo $array[0]['name'].'在'.$array[0]['year'].'年出生,今年已经'.$array[0]['age'].'岁了<br/>'; echo $array[1]['name'].'在'.$array[1]['year'].'年出生,今年已经'.$array[1]['age'].'岁了'; ?>
输出结果:
其中我们需要注意的是:数组的不同维度标志着我们需要使用几个下标来获取对应的数组元素,比如二维数组需要使用两个下标来获取对应的数组元素,三维数组则需要三个,以此类推。
有时我们希望用一个以上的键来保存数据,这样就需要用到PHP的多维数组来实现了。不过,有时希望用一个以上的键存储值。这时候就可以用多维数组进行存储。接下来我们来看一下多维数组。
多维数组
除了二维数组外,PHP 还支持三维数组、四维数组甚至更加多维度的数组,这里可以统称为多维数组,不过数组超过三维之后可读性就会大大降低,同时也不便于管理。
参考二维数组,举一反三,可以很容易地创建三维数组、四维数组或者其他更高维数的数组。接下来我们通过示例来看一下三维数组是怎样定义的,示例如下:
<?php $arr = array( '中国' => array( '安徽'=>array('合肥','蚌埠','芜湖'), '江苏'=>array('南京','徐州','苏州'), '浙江'=>array('杭州','宁波','温州') ), '美国' => array( '阿拉斯加州'=>array('朱诺','安克雷奇'), '路易斯安那州'=>array('新奥尔良','巴吞鲁日'), '加利福尼亚州'=>array('洛杉矶','萨克拉门托') ) ); echo '<pre>'; print_r($arr); echo $arr['中国']['安徽'][0]; // 输出合肥 ?>
输出结果:
上述示例便是多维数组的定义以及怎样获取多维数组中的元素。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
以上就是PHP中怎样定义多维数组及获取其中元素?的详细内容,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)