第三章 使用数组(2)
2016-07-21 22:21 yojiaku 阅读(183) 评论(0) 编辑 收藏 举报
- 多维数组
二维数组:相当于1个矩阵,或者一个具有宽度和高度 或者行和列 的网格。例如:这个图用一个二维数组保存Bob的产品,每一行代表一种产品(product),
每一列代表产品的属性(product attribute)。
PHP代码实现:
//create a two-dimensional array $products2 = array(array('TIR','Tires',100), array('OIL','Oil',10), array('SPK','Spark Plugs',4)); //show this array in the browser echo '|'.$products2[0][0].'|'.$products2[0][1].'|'.$products2[0][2]."<br />"; echo '|'.$products2[1][0].'|'.$products2[1][1].'|'.$products2[1][2]."<br />"; echo '|'.$products2[2][0].'|'.$products2[2][1].'|'.$products2[2][2]."<br />";
示例效果:
还可以用双重for循环来实现同样的效果:
for($row = 0;$row < 3;$row++){ for($column = 0;$column < 3;$column++){ echo "|".$products2[$row][$column]; } echo "<br />"; }
另一种PHP代码实现(创建列名称来代替数字)-(描述型索引):
//create a two-dimensional array $products3 = array(array('Code'=>'TIR','Description'=>'Tires','Price'=>100), array('Code'=>'OIL','Description'=>'Oil','Price'=>10), array('Code'=>'SPK','Description'=>'Spark Plugs','Price'=>4)); //show this array in the browser for($row = 0;$row < 3;$row++){ echo "|".$products3[$row]['Code']."|".$products3[$row]['Description']."|".$products3[$row]['Price']."<br />"; }
示例显示效果与前面的示例显示效果一模一样。
还可以在while循环中使用each()和list()函数来遍历整个内部数组:
//show this array in the browser for($row = 0;$row < 3;$row++){ while(list($key,$value)=each($products3[$row])){ echo "|$value"; } echo "<br />"; }
如果Bob想对他的商品进行分类:CAR,Van , Truck,则使用三维数组:
//create a three-dimensional array $categories = array(array(array('CAR_TIR','Tires',100), array('CAR_OIL','OIl',10), array('CAR_SPK','Spark Plugs',4) ), array(array('VAN_TIR','Tires',100), array('VAN_OIL','Oil',10), array('VAN_SPK','Spark Plugs',4) ), array(array('TRK_TIR','Tires',100), array('TRK_OIL','Oil',10), array('TRK_SPK','Spark Plugs',4) ) ); //show this array in the browser for($layer = 0;$layer < 3;$layer++){ echo "Layer $layer<br />"; for($row = 0;$row < 3;$row++){ for($column = 0;$column < 3;$column++){ echo "|".$categories[$layer][$row][$column]; } echo "<br />"; } }
以此类推,可以创建四维、五维或六维数组等。
- 数组排序
使用sort()函数:
$products4 = array('Tires','Oil','Spark Plugs'); sort($products4);
现在产品顺序变为:Oil、Spark Plugs、Tires
注意:sort()函数区分大小写,且所有大写字母都在小写字母前面,例如:
$products4 = array('Tires','oil','Spark Plugs'); sort($products4); for($row = 0;$row < 3;$row++){ echo $products4[$row]." "; }
显示结果为:
使用asort()函数和ksort()函数对关联数组进行排序:如果用关联数组存储各个项目和它们的价格,就需要使用不同的排序函数使关键字和值在排序时仍然保持一致。
下面的代码将创建一个包含3个产品及价格的数组,然后将它们按照价格的升序进行排序:
$products5 = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4); asort($products5); foreach ($products5 as $key => $val){ echo "$key = $val<br />"; }
注意asort要用foreach来遍历,结果为:
使用ksort来排序:
$products6 = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4); ksort($products6); foreach ($products6 as $key => $val){ echo "$key = $val<br />"; }
示例结果为:
除此之外,sort()/asort()/ksort()涵涵素各对应一个反向排序的函数:rsort(),arsort(),krsort() .