php学习 数组课件

 更新时间:2008年06月15日 12:56:49   作者:  
数组是一个可以储存一组或一系列值的变量。* 数组是一种基本的数据类型。 数组函数还可以实现堆栈和队列等数据结构。

    array_fill
array_fill让使用者可以自定义数值,填满目标数组中指定的索引区段。
语法格式:array_fill(起始索引位置,区段大小,指定字元)
其中起始索引位置与区段大小必须为integer(整型)形态数值,而且区段大小指定不得为0。
  $a = array_fill(5, 6, 'banana');
  print_r($a);
输出结果:Array([5]  => banana[6]  => banana[7]  => banana[8]  => banana[9]  => banana[10] => banana)

    array_filter
array_filter依次将目标数组中的每个值传递到使用者自定义函数。如果使用者自定义函数返回 TRUE(真
),则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。 
语法格式:array_filter(目标数组,使用者自定义函数)
  function odd($var)
  {
     return($var % 2 == 1);
  }
  $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
  print_r(array_filter($array1, "odd"));
输出结果:Odd :Array([a] => 1[c] => 3[e] => 5)
  $entry = array(0 => 'foo',1 => false,2 => -1,3 => null,4 => '');
  print_r(array_filter($entry));
输出结果Array([0] =>foo[2] => -1)
其它的回调函数:array_walk (), array_map()  

    array_flip
array_flip将目标数组中的索引与内容值,作反相的处理,反相后的数组会以原内容值作为索引,而索引作为资料内容.
array_flip语法格式:交换数组中的键和值
array_flip(目标数组)
  $trans = array("a" => 1, "b" => 1, "c" => 2);
  $trans = array_flip($trans);
  print_r($trans);
输出内容:Array([1] =>b[2] =>c)
如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。

    array_sum
array_sum用来计算数组中所有元素值的总和。
语法格式:array_sum(目标数组)

    array_unique
array_unique用来除区目标数组中重复的资料,并运算后传回新的数值。

    array_keys与array_values
array_keys该函数将忽略原始的键名,使用顺序的数字对数组重新索引,针对关联数组。
array_values该函数返回一个包含数字或字符串的键名数组。返回 input 数组中所有的值并给其建立数字索引。
  $arr=array("a"=>1,"b"=>2,"abc",2);
  $b=array_keys($arr);  
  $c=array_values($arr);
输出结果:$b=Array ( [0] => a [1] => b [2] => 0 [3] => 1 ) 
  $c=Array ( [0] => 1 [1] => 2 [2] => abc [3] => 2 ) 

    数组的检索
对数组的检索,主要指对数组的键名或者元素值进行判断,从而确定某个数组元素的存在与否。
语法格式:bool in_array(mixed $needle, array $haystack[,bool $strict]);
  $arr3=array(1,2,3,"hello","wprld");
  $b=in_array("hell",$arr3,true);
  var_dump($b);  
  $arr4=array(1,2,3,array("hello","world"));
  $b=in_array(array("hello","world"),$arr4);
  var_dump($b);
输出结果:bool(false) bool(true) 

    数组和变量之间转换
extract()和compact()函数进行数组与变量之间转换。
转换后, 数组元素的键名与变量名,以及元素的值与变量的值保持着对应的关系。
extract这个函数用于将变量从数组中倒入当前符号表中
  $info = array("user_id"=>2006001,"user_name"=>"佟香玉", "position"=>"项目经理");
  extract($info);
  echo $user_id;
输出结果:2006001
compact()接受可变的参数数目。每个参数可以是一个包括变量名的字符串或者是一个包含变量名的数组,该数组中还可以包含其它单元内容为变量名的数组, compact() 可以递归处理。 
  $city  = "San Francisco";
  $state = "CA";
  $event = "SIGGRAPH";
  $location_vars = array("city","state");
  $result = compact("event","nothing_here",$location_vars);
  print_r($result);
输出结果:Array ( [event] => SIGGRAPH [city] => San Francisco [state] => CA ) 

    数组与栈
array_push()函数将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数。
array_pop()函数将数组栈的最后一个元素弹出,并将该元素返回。
范例array_push
  $a=array("dsa","dsas","dfs","gfd");
  array_push($a,"ssss","ddddd");
  print_r($a);
输出结果:Array ( [0] => dsa [1] => dsas [2] => dfs [3] => gfd [4] => ssss [5] => ddddd ) 
范例array_pop弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一。如果 array 为空(或者不是数组)将返回 NULL。 
  $a=array("dsa","dsas","dfs","gfd");
  array_pop($a);
  print_r($a);
输出结果:Array ( [0] => dsa [1] => dsas [2] => dfs ) 

    数组与对列
队列也可以以数组的形态出现,数组中的第一个元素是对头,最后是对尾。
在对尾插入元素可以使用堆栈的方法。
从队列数组中删除对头元素可以使用array_shift函数,该函数将数组的第一个元互移出并作为结果返回, 同时,数组长度减1,并且其他元素向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不改变。
array_shift范例
  $a=array("dsa","dsas","dfs","gfd");
  $title=array_shift($a);
  print_r($a);
输出结果:Array ( [0] => dsas [1] => dfs [2] => gfd ) 
可以使用array_unshift()函数在队列数组的开头插入一个或多个元素,该函数返回成功插入元素个数。
  $a=array("dsa","dsas","dfs","gfd");
  $title=array_unshift($a,"a",array(1,2));
  print_r($a);
输出结果:Array ( [0] => a [1] => Array ( [0] => 1 [1] => 2 ) [2] => dsa [3] => dsas [4] => dfs [5] => gfd ) 
由结果可以看出 还可以插入数组

    数组的排序
忽略键名的数组排序
sort()正
rsort()倒
usort()
  $arr = array("3"=>"lemon", "2"=>"orange", "4"=>"banana", "1"=>"apple");
  ksort($arr);
  foreach ($arr as $key => $val) {
        echo "$key = $val\n";
  }

    数组的计算
对数组的计算是比较方便的。最简单的计算是求数组内部的所有元素之和。也可以把数组作为一个集合处理,对两个或多个数组进行合并,计算数组间的差集或交集等。
数组的合并 合并 并不是+
范例
  $arr2=array(1,2,3);
  $arr3=array(3,4,5);
  $a=array_merge($arr2,$arr3);
  print_r($a);
输出结果:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 3 [4] => 4 [5] => 5 ) 
计算数组的差集
  $array1 = array("a" => "green", "red", "blue", "red");
  $array2 = array("b" => "green", "yellow", "red");
  $result = array_diff($array1, $array2);
  print_r($result);
输出结果:Array ( [1] => blue ) 差级是取前面的区别值
计算数组的交集
  $array1 = array("a" => "green", "red", "blue");
  $array2 = array("b" => "green", "yellow", "red");
  $result = array_intersect($array1, $array2);
  print_r($result);
输出结果:Array ( [a] => green [0] => red ) 交集取上下两边共同都有的

创建指定范围的数组:
range(); 
移除数组中重复的值:
array_unique(); 
逆序返回数组:
array_reverse(); 

    数组的随机函数:随机数
srand((float) microtime()*10000000)设置随机发生器种子
array_rand();  
array_shuffle();
范例
echo date("Ymd").rand(1000000,9999999)."jpg";

输出结果:200805096246795jpg 的随即数
课件为phpchina学习课件
php数组.rar

相关文章

最新评论