释义: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() 所打开。 ?>
文章评论