php数组

2013/10/01 1968点热度 0人点赞 0条评论

   释义:php中的数组实际上是一个有序映射.映射是把一种values关联到keys的类型.可以把它当成数组或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性.数组元素的值可以是另外一个数组,树形结构和多维数组也是允许的.

  定义数组array()

  语法:

array(key=>value
         ,......
        )

  //键(key)可以使一个整数或者字符串

  //值(value)可以是任意类型的值

<?php
    $arr=array("foo"=>"bar",12=>true);
    echo $arr["foo"];
    echo "<br>";
    echo $arr[12];//1
     echo " <br>";
 ?>

key 可以是 integer 或者 string。如果key是一个 integer 的标准表示,则被解释为整数(例如 "8" 将被解释为 8,而 "08" 将被解释为 "08")。key中的浮点数被取整为 integer。在 PHP 中索引数组与关联 数组 是相同的,它们都可以同时包含 整型 和 字符串 的下标。

如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。

<?php
     // 这个数组与下面的数组相同 ...
    $arr1= array(5 => 43, 32, 56, "b" => 12);
    $arr2= array(5 => 43, 6 => 32, 7 => 56, "b" => 12);
    //遍历数组
    foreach ($arr1 as $key => $value) { 
       echo $key.": ".$value."<br />"; 
    }
    print_r($arr1);
    echo " <br>";
    print_r($arr2);
?>

使用方括号的语法新建/修改

 1)如果数组没有值,则会新建一个数组

 2)如果数组有对应的key,则会修改对应的key

<?php
    $arr3[]="yxkong";//创建一个新数组,内只有一个key=0,value="yxkong",如果定义了key,key值就是自定义的值
    print_r($arr3);
    $arr4=array("a"=>"a1","b"=>"b1","c"=>"c1");
    $arr4["a"]="改变后的值";//修改键位"a"的值为"改变后的值"
    $arr4[]="新加的";//新添加的数值它的key为0,找最大的数值key+1,没有从0开始
    print_r($arr4);
    unset($arr4["b"]);//从数组中删除指定的键b
    print_r($arr4);
    unset($arr4);//删除整个数组,连定义都删了,不是清空
    print_r($arr4);//Notice: Undefined variable: arr4 
  
    // 创建一个简单的数组
    $arr5 = array(1, 2, 3, 4, 5);
    print_r($arr5);
  
    // 现在删除其中的所有元素,但保持数组本身不变:
    foreach ($arr5 as $i => $value) {
        unset($arr5[$i]);
    }
    print_r($arr5);//清空后的数组,数组还存在,
  
    // 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
    $arr5[] = 6;
    print_r($arr5);
  
    // 重新索引:
    $arr5 = array_values($arr5);
    $arr5[] = 7;
    print_r($arr5);
  
 ?>

比较数组  array_diff(array dest,arrayyige res1[,array res...])

   array_diff() 返回一个数组,该数组包含所有在dest中,但是不在任何其他参数数组中的值.键值对还是dest中的.

    数组运算符

  $a+$b   联合   $a 和 $b 的联合。

  $a==$b  相等   如果 $a 和 $b 具有相同的键/值对则为 TRUE。

  $a===$b 全等   如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。

  $a!=$b  不等   如果 $a 不等于 $b 则为 TRUE。

  $a<>$b  不等   如果 $a 不等于 $b 则为 TRUE。

  $a!==$b 不全等 如果 $a 不全等于 $b 则为 TRUE。

<?php
    $arr6=array("a"=>"green","red","blue","red");  
    $arr7=array("b"=>"green","yellow","red");
    $result=array_diff($arr6,$arr7);
    print_r($result);
    echo "<br>";
    $switching = array(         10, // key = 0
                    5    =>  6,
                    3    =>  7, 
                    'a'  =>  4,
                            11, // key = 6 (maximum of integer-indices was 5)
                    '8'  =>  2, // key = 8 (integer!)
                    '02' => 77, // key = '02'
                     0 => 12  // 前面出现了对应的key,会覆盖前面的key的值
                  );
     print_r($switching);
  
  
  
  
     $colors = array('red', 'blue', 'green', 'yellow');
    echo "<br>";
    foreach ($colors as $color) {
        echo "Do you like $color?\n";
    }
  print_r($colors);//在此还是小写
    //自php5起 可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。 
    foreach ($colors as &$color) {
        $color = strtoupper($color);//修改数组的元素
    }
    echo "<br>";
     print_r($colors);//变大写了
  
    sort($colors);//排序数组,索引都改变了
    print_r($colors);
    echo count($colors)."<br>";//统计数组的大小 count(var )返回值是int类型
   //count() 对没有初始化的变量返回 0,但对于空的数组也会返回 0,用 isset() 来测试变量是否已经初始化。
    //获取当前访问的根路径下的文件
    $handle = opendir('.');//打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
    //readdir()返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
    while (false !== ($file = readdir($handle))) {
        $files[] = $file;
        if(is_dir($file)){
           echo $file." 是一个目录";
        }else{
            echo $file."<br>";
        }
    }
    closedir($handle); //关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。
  
 ?>

yxkong

这个人很懒,什么都没留下

文章评论