代码改变世界

第三章 使用数组(1)

2016-07-20 23:40  yojiaku  阅读(217)  评论(0编辑  收藏  举报

学习重点:

  • 数字索引数组
  • 非数字索引数组
  • 数组操作符
  • 多维数组
  • 数组排序
  • 数组函数

在第一章和第二章,我使用的变量是标量变量 (只能存储单个数值)。而数组可以具有许多个元素。PHP只吃数字索引数组和关联数组。

关联数组允许使用更有意义的数据作为索引。每个元素除了可以使用数字索引外,还可以使用字符串或其他更有意义的信息作为索引.

数组:一个用来存储一系列变量值的命名区域。—— 标量变量:一个用来存储数值的命名区域。

  • 数字索引数组

    初始化:建立一个简单的数组,示例:$products = array('Tires','Oil','Spark Plugs');这样就创建了一个名为$products的数组,它包含三个定值——"Tires","Oil","Spark Plugs"

        其中,array()实际上是一个语言结构,不是一个函数。

        如果需要将所需数据保存到另一个数组中,可以直接使用"="将数组复制到另一个数组:$products2 = $products;

        如果需要将按升序排列的数字保存在一个数组中,可以使用range()函数自动创建这个数组:$number = range(1,10);其中,range()函数还有第三个可选的参数,这个参数

        允许设定值之间的步幅,例如我们可以这样创建一个1,3,5,7,9的数组:$number = range(1,10,2); (其中步幅为2)

        range()函数还可以对字符进行操作:$letter = range('a','z');

    访问数组的内容:要访问一个变量的内容,可直接使用其名称;

            如果该变量是一个数组,可用变量名称和关键字或者索引的组合来访问其内容。

            例:使用$products[0],$products[1],$products[2]就可以访问$products数组中的内容了。

    使用循环访问数组:

//create an array
$products = array('Tires','Oil','Spark Plugs');

for($i = 0;$i < 3;$i++){
    echo $products[$i]." ";

 

     示例结果为:Tires Oil Spark Plugs

     也可以使用foreach循环,即:

//create an array
$products = array('Tires','Oil','Spark Plugs');

foreach($products as $current){
    echo $current." ";
}

    示例结果仍为:Tires Oil Spark Plugs

    foreach语法结构:仅能够用于数组和对象。有两种用法:

            【1】foreach (array_expression as $value)  

                      statement

            【2】foreach (array_expression as $key => $value)

                    statement

 

          第一种格式遍历给定的 array_expression 数组,每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

          第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key

          TIPS:可以通过在$value之前加上 & 来修改数组的元素。

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>

                注意$value的引用仅在被遍历的数组可以被引用时才可用,下面的代码则无法运行:

<?php
foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}

?>
  • 使用不同索引的数组

    在关联数组中,可以将每个变量值与任何关键字或索引关联起来。

    初始化关联数组:$prices = array('Tires' => 100,'Oil' => 10,'Spark Plugs' => 4); 这样就可以创建一个以产品名称作为关键字、以价格作为值得关联数组。

    访问数组元素:可使用变量名称和关键字来访问数组的内容,因此可以用$prices['Tires'],$prices['Oil'],$prices['Spark Plugs']来访问prices数组中的信息。

    使用循环语句:(因为关联数组的索引不是数字,所以不能用计数器对数组进行操作),使用 foreach循环 或 list() 和 each() 结构

           当使用foreach循环时,可以这样使用:

$prices = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);
foreach ($prices as $current){
    echo $current." ";
}

 

              示例结果为:100 10 4

              也可以这样:

$prices = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);
foreach ($prices as $key => $value){
    echo $key." - ".$value."<br />";
}

              示例结果为:

              下面是用each()结构打印$prices数组的内容:

$prices = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);
while($element = each($prices)){
    echo $element['key'];
    echo " - ";
    echo $element['value'];
    echo "<br />";
}

             示例结果为:

             each()函数将返回数组的当前元素,并将下一个元素作为当前元素。在while循环中调用each()函数,它将按顺序返回数组中每个元素,并且当它到达数组末尾时,循环操作将终止。

             下面是list()函数的使用:

$prices = array('Tires'=>100,'Oil'=>10,'Spark Plugs'=>4);
while(list($product,$price) = each($prices)){
    echo "$product - $price<br />";
}

             以上代码使用each()从$prices数组中取出当前元素,并且将它作为数组返回,然后再指向下一个元素。它还用list() 将从each()返回的数组中所包含0、1两个元素变为两个名为 $product 和 $price 的新变量。

  • 数组操作符