入门:PHP编程“数组”的基础知识

  • 来源: eNet硅谷动力 作者: xuqingzhong   2008-05-24/01:59
  •  

     

    关于数组:
    PHP中的数组是复杂的,并且比许多其他高级语言中的数组更灵活。
    数组array是一组有序的变量,其中每个变量被叫做一个元素。
    数组可以被编号或者相关联,也就是数组的元素可以分别根据数字索引或文本化字符串来访问
    PHP中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值
    1。创建数组
    PHP提供创建数组的array()语言结构
    $numbers = array(5,4,3,2,1);
    $words = array("web","database","application");
    echo $numbers[2];
    echo $words[0];
    ---------------------输出结果----------------------------------------
    3web
    ---------------------------------------------------------------------
    默认情况下,数组的第一个元素的索引为0。数组中包含的值可以通过使用方括号[]语法来检索和修改
    $numbers[5] = 0;
    数字化索引的数组可以创建位从任何索引值开始
    $numbers = array(1=>"one","two","three","four");
    也可以松散的索引
    $numbers = array(1=>"one",3=>"three",5=>"zero");
    可以通过给变量赋予一个没有参数的array()来创建空数组。然后可以通过使用方括号[]语法来添加值
    $error = array();
    $error[] = "no error!!!";
    $error[] = "second error!!!";
    echo $error[0];
    echo $error[1];
    ---------------------输出结果----------------------------------------
    no error!!!second error!!!
    ---------------------------------------------------------------------
    2.关联数组
    关联数组(associative array)使用字符串索引(或键)来访问存储在数组中的值
    关联索引的数组对于数据库层交互非常有用
    $newarray = array("first"=>1,"second"=>2,"third"=>3);
    echo $newarray["second"];
    $newarray["third"]=5;
    echo $newarray["third"];
    ---------------------输出结果----------------------------------------
    25
    ---------------------------------------------------------------------
    3.异构数组
    PHP数组可以包含不同种类的值
    $mixedBag = array("cat",42,8.5,false);
    var_dump(mixedBag);
    4.多维数组
    创建包含数组的数组,数组维数没有限制,但是一般很难想象一个多于三维的数组的用法
    $planets = array(array("MM",1,2),array("NN",3,4),array("BB",5,6),array("VV",7,8));
    print $planets[2][0];
    $planets2 = array("MM"=>array("AA"=>1,"SS"=>2),
    "NN"=>array("DD"=>3,"FF"=>4),
    "BB"=>array("GG"=>6,"HH"=>7,"PP"=>array("haha!!!!")),
    "VV"=>array("JJ"=>6,"KK"=>7,"LL"=>array("one","two")));
    print $planets2["VV"]["LL"][0];
    ---------------------输出结果----------------------------------------
    BBone
    ---------------------------------------------------------------------

    5.使用循环访问数组
    遍历数组的方法有很多(使用while,for循环)或者foreach语句,最容易的是foreach 语句
    $length = array(0,107,202,400,475);
    //将厘米转换为寸
    for($i=0;$i<5;$i++)
    {
    echo ($length[$i]/3);

     

    }
    $j=0;
    while(isset($length[$j]))
    {
    echo ($length[$j]/3);
    $j++;
    }
    foreach($length as $cm)
    {
    echo ($cm/3);
    }

    ---------------------输出结果----------------------------------------
    0
    35.6666666667
    67.3333333333
    133.333333333
    158.333333333
    0
    35.6666666667
    67.3333333333
    133.333333333
    158.333333333
    0
    35.6666666667
    67.3333333333
    133.333333333
    158.333333333

    ---------------------------------------------------------------------
    foreach还可以迭代关联数组的值
    $sound = array("cow"=>"moo","dog"=>"woof",
    "pig"=>"oink","duck"=>"quack");
    foreach ($sound as $animal=>$noice)
    {
    echo "$animal 得叫声是这样的 $noice $noice......";
    }
    ---------------------输出结果----------------------------------------
    cow 的叫声是这样的 moo moo......
    dog 的叫声是这样的 woof woof......
    pig 的叫声是这样的 oink oink......
    duck 的叫声是这样的 quack quack......

    ---------------------------------------------------------------------
    6.使用数组指针
    与存储在数组中的键和关联值一起,PHP还拥有一个指向数组当前元素的内部索引,
    有几个函数使用并更新该数组索引来提供对数组元素的访问
    $a = array("a","b","c","d","e","f");
    echo current($a);
    each($a);
    key($a);//目前数组的指针,返回其索引
    echo current($a);//当前元素的值
    each($a);//返回当前元素的值并将内部索引指向下一个元素
    each($a);
    echo current($a);
    next($a);//指向下一个元素
    echo current($a);
    prev($a);//指向上一个元素
    #p#分页标题#e#

     

     

    echo current($a);
    end($a);//指向最后一个元素
    echo current($a);
    key($a);
    echo current($a);
    ---------------------输出结果----------------------------------------
    abdedff
    ---------------------------------------------------------------------
    7.基本的数组函数
    integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量
    number max(array numbers)//返回数组中的最大值
    number min(array numbers)//返回数组中的最小值
    boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强制执行类型检查
    mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,
    找不到时返回false,找到的元素如果正好是第一个元素,则返回0,而PHP会自动转化为false所以需要使用===判断,如下

    $a = array("a","b","c","d","e","f");
    $index = array_search("a",$a);
    if($index === false)
    echo "在数组a中未发现字符'a'";
    else
    echo "Index = $index";
    ---------------------输出结果----------------------------------------
    Index = 0
    ---------------------------------------------------------------------
    array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联
    $a = array("a","b","c","d","e","f");
    $newa = array_reverse($a);//直接翻转
    echo $newa[0];
    $newb = array_reverse($a,true);//依旧保留了索引和元素之间的关联
    echo $newb[0];
    ---------------------输出结果----------------------------------------
    fa
    ---------------------------------------------------------------------
    sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)
    rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素)
    可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序
    sort()、rsort()可以用于关联数组,但是 键 将丢失
    asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联
    arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联
    当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是访问元素的索引不改变
    integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列
    integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列
    usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合

    uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a等于b时返回0
    $numbers = array(16,3,2,171,5,24,6,19);
    sort($numbers);
    foreach($numbers as $n)
    echo $n." ";

    echo current($a);
    end($a);//指向最后一个元素
    echo current($a);
    key($a);
    echo current($a);
    ---------------------输出结果----------------------------------------
    abdedff
    ---------------------------------------------------------------------
    7.基本的数组函数
    integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量
    number max(array numbers)//返回数组中的最大值
    number min(array numbers)//返回数组中的最小值
    boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强制执行类型检查
    mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,
    找不到时返回false,找到的元素如果正好是第一个元素,则返回0,而PHP会自动转化为false所以需要使用===判断,如下

    $a = array("a","b","c","d","e","f");
    $index = array_search("a",$a);
    if($index === false)
    echo "在数组a中未发现字符'a'";
    else
    echo "Index = $index";
    ---------------------输出结果----------------------------------------
    Index = 0
    ---------------------------------------------------------------------
    array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联
    $a = array("a","b","c","d","e","f");
    $newa = array_reverse($a);//直接翻转
    echo $newa[0];
    $newb = array_reverse($a,true);//依旧保留了索引和元素之间的关联
    echo $newb[0];
    ---------------------输出结果----------------------------------------
    fa
    ---------------------------------------------------------------------
    sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)
    rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素) #p#分页标题#e#
    可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序
    sort()、rsort()可以用于关联数组,但是 键 将丢失
    asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联
    arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联
    当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是访问元素的索引不改变
    integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列
    integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列
    usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合

    uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a等于b时返回0
    $numbers = array(16,3,2,171,5,24,6,19);
    sort($numbers);
    foreach($numbers as $n)
    echo $n." ";

     


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多