4)number array_sum(array arr)
计算数组中所有元素的和。返回整数或浮点数。Arr中非数值类型的数据将
类型转换为整数或浮点数。
5)number array_product(array arr)
计算数组中所有元素的积。返回整数或浮点数。Arr中非数值类型的数据将
类型转换为整数或浮点数
6)array array_count_values(array arr) 计算数组arr中所有元素的值出现的次数。
$a=array(1,'hello',1,'world','hello');
print_r(array_count_values($a));//Array ( [1] => 2 [hello] => 2 [world] => 1 )
?>
数组指针函数:
每一个PHP数组创建时都会自动建立一个内部指针系统。自动建立一个当前指针current指向数组第一个元素,next指向下一个元素,previous指向上一个元素。
数组指针函数中的数组类型参数为数组的引用&arr,因此经数组指针函数操作后的数组,其结构有可能发生变化(如:当前指针发生移动等。) 1) mixed key(array &arr)
返回数组arr中,当前指针所指元素的键名.该函数不移动当前指针,也不改变内部结构。
2) mixed current(array &arr)
返回数组arr中,当前指针所指元素的值.该函数不移动当前指针,也不改变内部结构。
3) mixed next(array &arr)
移动数组arr的当前指针指向下一个元素,然后返回当前指针所指元素的值。当移动后指向最后一个元素时,当前指针为空,并且当前指针指向的元素值为FALSE
4)mixed end(array &arr)
移动当前指针到最后一个元素,然后返回当前指针所指元素的值。
5)mixed prev(array &arr)
移动当前指针指向前一个元素,并返回当前指针所指元素的值。 6)mixed reset(array &arr)
重置指针,使当前指针指向第一个元素。然后返回当前指针所指元素的值。 7)array each(array &arr)
以数组的形式返回当前指针所指的元素(包括键和值)。然后移动数组arr的当前指针指向下一个元素。该函数返回的数组中共有四个元素(键值对)。 0和key的值为当前指针所指元素的键名,1和value的值为当前指针所指元素的值。
数组和变量间的转换函数:
1) void list(mixed varname1[,mixed varname2[,mixed …]]) =array arr; 注意:list()语言结构仅用于数字“键”的数组,并要求数字“键”从0开始连续递增。
$info=array('coffee','tea','cole'); list($var1,$var2,$var3)=$info; echo $var1.\; echo $var2.\; echo $var3.\; list(,,$var4)=$info; echo $var4;
//结果 //coffee //tea //cole //cole ?>
int extract(array arr)
2)
使用数组arr定义一组变量,其中变量名为数组arr元素的键名,变量值为数组元素arr中元素键对应的值。
3)array compact(mixed varname1[,mixed varname2[,mixed …]])
返回一个数组,数组中每个元素的键名为变量名varname1(varname2...)。每个数组元素的值为对应变量的值。
数组检索函数:
1) array array_keys(array arr[,mixed searchValue])
array_keys()函数以数组的形式返回arr数组中的键名。如果指定了可选参数searchValue,则只返回searchValue值的键名,否则所有的键名都会被返回。
2)array array_values(array arr)
array_values()函数以数组的形式返回arr数组中所有的元素值(过
滤掉重复的元素值)。并为该数组建立连续的整数键。
3)bool in_array(mixed searchValue,array arr[,bool strict])
检查数组中是否存在值searchValue,存在返回TRUE,否则返回FALSE。
如果第三个参数设置为TRUE,则该函数还会检查数据类型是否相同。默认为FALSE。
4)bool array_key_exists(mixed keyName,array arr)
检查数组arr中是否存在键名keyName.
5) mixed array_search(mixed searchValue,array arr[,bool strict])
在数组arr中检索给定的值searchValue,如果找到则返回对应的键名,
否则返回FALSE。如果第三个参数设置为TRUE,则该函数还会检查数据类型是否相同。默认为FALSE。
如果searchValue是字符串,则比较时区分大小写,如果searchValue
在arr中出现不只一次,则返回第一个匹配的键。要返回所有匹配值的键,应该使用array_keys()函数。
6)array array_unique(array arr)
返回一个移除数组arr中重复的元素的值的新数组。
$colors=array('a'=>'green','red','b'=>'green','blue','red');
print_r(array_unique($colors));//Array ( [a] => green [0] => red [1] => blue )
数组排序函数:
1) bool sort(array &arr)
按元素值的升序对数组arr进行排序。sort()函数为排序后的数组arr赋予新的整数键名。
$array=array(\,\,\); sort($array);
print_r($array);//Array ( [0] => imag1 [1] => imag10 [2] => imag2 )
2)bool asort(array &arr)
asort()函数按元素值的升序对数组arr进行排序。arr数组经该函数排序后保持数组元素原有的“键值对”对应关系。
$array1=array(\,\,\); asort($array1);
print_r($array1);//Array ( [0] => imag1 [2] => imag10 [1] => imag2 )
3)rsort()函数和arsort()函数
rsort()和sort(),arsort()和asort()函数用法一致,只是他们两个是按照降序排序。
4) bool ksort(array &arr)
对数组arr按照键名升序排序,并保持数组元素原有的“键值对”对应关系。 5)bool krsort(array &arr)
对数组arr按照键名降序排序,并保持数组元素原有的“键值对”对应关系。
6)bool natsort(array &arr)
用“自然排序”算法对数组arr元素的值进行升序排序,并保持数组元素原有的“键值对”对应关系。
7)bool natcasesort(array &arr)
用“自然排序”算法对数组arr元素的值进行不区分大小写字母的升序排序,并保持数组元素原有的“键值对”对应关系不变。 8) bool shuffle(array &arr)
为随机排序函数。该函数将为随机排序后的数组arr赋予新的键名。
9) array array_reverse(array arr[,bool preserve_keys]) 返回一个和数组arr元素顺序相反的新数组,如果preserve_keys为TRUE则保持数组元素原有的“键值对”对应关系不变。
数组与数据结构:
模拟栈等数据结构的函数: 1)int array_push(array &arr,mixed var1[,mixed var2[,mixed…]])
该函数将arr当成一个栈,并将参数var1,var2…依次压入arr的末
尾。该函数返回新数组元素的个数。 2)mixed array_pop(array &arr)
弹出数组arr最后一个元素,并返回该元素的值。如果arr为空(或者不
是数组)返回NULL。使用该函数会把数组arr的“当前指针”复位(自动调用reset()函数)。
3) int array_unshift(array var2[,mixed…]])
&arr,mixed var1[,mixed
该函数将arr当成一个特殊的队列(在队首插入元素,在队首删除元素),
并将参数var1,var2,...依次插入arr的队首。返回入队元素的个数。使用该函数会把数组的“当前指针”复位(自动调用reset()函数)。 4)mixed array_shift(array &arr)
删除数组arr的第一个元素,并返回该元素的值。如果arr为空(或者不是数组)返回NULL。使用该函数会把数组的“当前指针”复位(自动调用reset()函数)。
数组集合运算函数:
1) array array_merge(array arr1[,array arr2[,array...]]) 将数组arr1,arr2等合并为一个数组并返回一个新数组(集合的并集运算)多个数组中,如果元素的键名相同,则后面的数组的元素的“值”覆盖前面数组的元素的“值”。如果数组元素的键名是数字,后面的值将不会覆盖原来的值,而是附加到后面。