php中输出关联型数组的方式有很多,下面我就来说说比较常用的输出方式:

1.第一个当然要属foreach:

foreach在java中也是经常拿来用的,它是专门设计用来输出数组的,举个例子:

    $prices = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);
    //初始化关联数组
    foreach($prices as $key => $value)://第一种
        echo $key."-".$value."<br/>";
        endforeach;
    reset($prices);//当两次使用同一数组时调用使之将当前元素重新设置到数组开始处

输出为:

    Tires-100

    Oil-10
    Spark Plugs-4

关联型数组与一般的数字型数组最大的不同就是它可以用字符串来作为索引,使之变得更加具有特定的意义。

2.使用while

    while($element = each($prices))://第二种
        echo $element['key'];
        echo "-";
        echo $element['value'];
        echo "<br/>";
        endwhile;
    reset($prices);
    while(list($product,$price)=each($prices)):
        echo "$product-$price<br/>";
        endwhile;

使用while就需要用到一些相关的函数,each将每一组元素传递给一个数组$element,直到each返回false结束;

而用list()函数,只是将字符串和值分别传递给单个变量而已,并分别将其输出。

3.使用for

    $products = array(    array('TIR','Tires',100),
            array('OIL','Oil',10),
            array('SPK','Spark Plugs',4) );
    for($row=0;$row<3;$row++){
        for($column=0;$column<3;$column++){
            echo '|'.$products[$row][$column];
        }    
        echo '|<br/>';
    }

输出为:

    |TIR|Tires|100|
    |OIL|Oil|10|
    |SPK|Spark Plugs|4|

4.多维数组

​​​​​​上面介绍的都是输出一维数组的较常用的方法,而对于多为数组来说则不是很方便,而for相对来说比较好理解。

以二维数组为例,最外层的for是说明第二维中(也就是array中的array个数)数组个数,也就是要输出多少行,第二个for是对于每个array中的array中数据来说的,每行中有几个数据就有几个列。

但是相对于一张二维表来说,这种输出方式不尽人意,因为二维表中有head,就像HTML5中表格中的<th>元素,所以就有了另外一种适合这种的输出方式:

    $kits = array(    array(    'Code'=>'TIR',
                        'Description'=>'Tires',
                        'Price'=>100
                        ),
                array(    'Code'=>'OIL',
                        'Description'=>'Oil',
                        'Price'=>10
                        ),
                array(    'Code'=>'SPK',
                        'Description'=>'Spark Plugs',
                        'Price'=>4
                        )
                );
    for($row=0;$row<3;$row++){
            echo '|'.$kits[$row]['Code'].'|'.$kits[$row]['Description'].'|'.$kits[$row['Price'].'<br/>';
    }

这个输出结果与上面的差不多,只是它将三个属性用三个别名来统称,利用别名,可以将每一行的输出都用它来代替,也就省去了用列来代替的麻烦。