<?php //自动建立数字数组1-10. //renge第三个参数是步幅。 $arr=range(1,10,2); echo "<pre>"; print_r($arr); echo "</pre>"; echo '<hr/>'; //使用索引数组循环输出值 $arr2[]='hello'; $arr2[]='PHP'; $arr2[]='test'; foreach($arr2 as $v){ echo $v.'<br/>'; } echo '<hr/>'; //关联数组的循环输出使用foreach $arr3=array('name'=>'xzy','age'=>23,'sex'=>'1'); foreach($arr3 as $k => $v){ echo $k.'---'.$v.'<br/>'; } echo '<hr/>'; /*使用eacg函数配合while循环输出,注意这里使用了命名位置 4个,【key和0,value和1】*/ $arr4=array('LJJ'=>525242,'HDP'=>520); while($v = each($arr4)){ echo $v[key]; echo '---'; echo $v[value]; echo '<br/>'; } echo '<hr/>'; /*each取出当前元素并指向一下个元素,使用list从each返回 的0和1二个元素变成名为$rk,$rv新变量。reset()函数将数组指向开始处*/ $arr5=array('one'=>1,'two'=>2,'three'=>3); while(list($rk,$rv) = each($arr5)){ echo "$rk -- $rv <br/>"; } echo '<hr/>'; /* 数组中的操作符 + 联合 $a+$b 数组$b将附加到$a中,如关键字冲突不会被添加 == 等价 $a==$b 如果$a和$b相同元素,返回TRUE ==== 恒等 $a===$b 如果$a和$b相同顺序和类型的元素,返回TRUE != 不等价 $a!=$b 如果$a和$b不相同元素,返回TRUE <> 不等价 同上(!=) !== 不恒等 $a!==$b 如果$a和$b不相同顺序类型的元素,返回TRUE */ //循环出二维数组,使用双重for循环实现 $arr6=array(array('SX','5300I',2500), array('SN','6000Y',6000), array('MT','9000D',8000) ); for($row=0;$row<3;$row++){ for($row2=0;$row2<3;$row2++){ echo '|' . $arr6[$row][$row2]; } echo '|' . '<br/>'; } echo '---------------------------------<br/>'; //这里使用有有意义的行和列的名称作为索引(描述性索引) $arr6=array(array('paizi'=>'SX', 'xinghao'=>'5300I', 'jiage'=>2500 ), array( 'paizi'=>'SN', 'xinghao'=>'6000Y', 'jiage'=>6000 ), array( 'paizi'=>'MT', 'xinghao'=>'9000D', 'jiage'=>8000 ) ); //使用for循环出二维数组,检索某个值 for($rows=0;$rows<3;$rows++){ echo $arr6[$rows]['paizi'] .'|'. $arr6[$rows]['xinghao'].'|'. $arr6[$rows]['jiage'] .'|'. '<br/>'; } echo '---------------------------------<br/>'; /*三维数组具有高、宽、深的概念,如果轻松地将一个二维数组想象成一个 有行和列的表格,每个元素通过层、行和列进行引用。*/ $arr7=array(array(array('TB','TD1',120), array('RB','RB2',250), ), array(array('TB2','TD1',120), array('RB2','RB2',250), ), array(array('TB3','TD1',120), array('RB3','RB2',250), ), ); for($layer=0;$layer<3;$layer++){ echo "Layer $layer <br/>"; for($row7=0;$row7<3;$row7++){ for($doc=0;$doc<3;$doc++){ echo '|'. $arr7[$layer][$row7][$doc]; } echo '| <br/>'; } } echo '---------------------------------<br/>'; /*sort()函数升序排序,区分大小写A小于Z,而Z小于a,第二个参数可选 可以传递SORT_REGULAR(默认值)SORT_NUMERIC或SORT_STRING指定类型 功能非常有用。字符串角度看12小于2,数字角度看2小于12。*/ $fruits = array ("lemon", "orange", "banana", "apple"); sort ($fruits); reset ($fruits); while (list ($key, $val) = each ($fruits)) { echo "fruits[".$key."] = ".$val."<br/>"; } echo '---------------------------------<br/>'; /*asort()函数对key进行反序排序,而ksort()函数按照 key正序排序。注意键名和数据是关联的*/ $arr8=array('orange'=>20,'banana'=>10,'apple'=>50); asort($arr8);//可以改ksort()函数进行排序 reset($arr8); while(list($key,$value) = each ($arr8)){ echo $key .'-->'.$value.'<br/>'; } echo '---------------------------------<br/>'; /*比较函数必须在第一个参数被认为小于,等于或大于 第二个参数时分别返回一个小于,等于或大于零的整数。*/ function cmp ($a, $b) { if ($a == $b) return 0; return ($a < $b) ? -1 : 1; } $a = array ('a'=>5,'v'=>20,'r'=>5,'c'=>6,'z'=>1); usort ($a, "cmp"); while (list ($key, $value) = each ($a)) { echo "$key : $value <br/>"; } echo '---------------------------------<br/>'; /*array_reverse() 接受数组 array 作为输入并返回一个单元 为相反顺序的新数组,如果 preserve_keys 为 TRUE 则保留 原来的键名。$result 和 $result_keyed 具有相同的单元, 但是注意键名的区别。*/ $input = array ("php", 4.0, array ("green", "red")); $result = array_reverse ($input); $result_keyed = array_reverse ($input, TRUE); echo "<pre>"; print_r($result_keyed); echo '---------------------------------<br/>'; /*shuffle()函数打乱(随机排列单元的顺序)一个数组。必须用 srand() 播下本函数的随机数发生器种子。*/ /*$numbers = range (1,20); srand ((float)microtime()*1000000); shuffle ($numbers); while (list (, $number) = each ($numbers)) { echo "$number "; }*/ echo '---------------------------------<br/>'; /*current(array) 函数返回当前被内部指针指向的数组 单元的值,并不移动指针。 prev(array)将数组的内部指针倒回一位。 next(array)将数组中的内部指针向前移动一位。 pos(array)得到数组当前的单元,本函数是 current() 的别名。 end(array)将数组的内部指针指向最后一个单元。 each(array)返回数组中当前的键/值对并将数组指针向前移动一步。 reset(array)将数组的内部指针指向第一个单元。*/ /*array_walk()对数组中的每个成员应用用户函数。 bool array_walk ( array array, callback function [, mixed userdata])*/ $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); /*这里第一个参数是值,第二个是关键字,第三个是参数。 下句使用地址符(&)表示允许函数修改数组的内容。*/ function test_alter (&$item1, $key, $prefix) { $item1 = "$prefix: $item1"; } function test_print ($item2, $key) { echo "$key. $item2<br>\n"; } echo "Before ...:<br/>"; array_walk ($fruits, 'test_print'); array_walk ($fruits, 'test_alter', 'fruit'); echo "... and after:\n"; array_walk ($fruits, 'test_print'); /*统计数组: count(array)统计变量中的单元数目,别名sizeof() 。 array_count_values(array)统计数组中所有的值出现的次数。*/ /*extract()函数将数组转换成标量变量,将关键字创建为变量名称, 这个变量的值也来自数组。关键字有效的变量名称。 参数是:传入数组、处理冲突、变量前缀。*/ $size = "large"; $var_array = array ("color" => "blue", "size" => "medium", "shape" => "sphere"); extract ($var_array, EXTR_PREFIX_SAME, "wddx"); print "$color, $size, $shape, $wddx_size <br/>"; /*EXTR_OVERWRITE 如果有冲突,覆盖已有的变量。 EXTR_SKIP 如果有冲突,不覆盖已有的变量。 EXTR_PREFIX_SAME 如果有冲突,在变量名前加上前缀 prefix。 EXTR_PREFIX_ALL 给所有变量名加上前缀 prefix。自 PHP 4.0.5 起这也包括了对数字索引的处理。 EXTR_PREFIX_INVALID 仅在非法/数字的变量名前加上前缀 prefix。本标记是 PHP 4.0.5 新加的。 EXTR_IF_EXISTS 仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在 已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖 这些变量的场合。本标记是 PHP 4.2.0 新加的。 EXTR_PREFIX_IF_EXISTS 仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理 。本标记是 PHP 4.2.0 新加的。 EXTR_REFS 将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数 的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志 结合使用。本标记是 PHP 4.3.0 新加的。 如果没有指定 extract_type,则被假定为 EXTR_OVERWRITE。 */ ?>

  

 posted on 2013-12-19 08:35  萧治源  阅读(163)  评论(0)    收藏  举报