数组处理函数库第2/2页
使用范例
<?
$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
ksort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."n";
}
?>
上面的例子,返回的资料为
fruits[a] = orange
fruits[b] = banana
fruits[c] = apple
fruits[d] = lemon
参考 arsort() asort() sort() rsort()
list
列出数组中元素的值。
语法: void list(...);
返回值: 无
函数种类: 资料处理
内容说明 和 array 函数一样,不算是正规的函数。list() 函数用在列出所有数组中的数值。
使用范例
下面的范例列出从 MySQL 数据库返回的数组资料。
<table>
<tr>
<th>员工姓名</th>
<th>薪资</th>
</tr>
<?php
$result = mysql($conn, "SELECT id, name, salary FROM employees");
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
print(" <tr>n".
" <td><a href="info.php3?id=$id">$name</a></td>n".
" <td>$salary</td>n".
" </tr>n");
}
?></table>
参考 each() array()
next
将数组的内部指针向后移动。
语法: mixed next(array array);
返回值: 混合类型资料
函数种类: 资料处理
内容说明 这个函数返回数组下个元素的内部指针,若没有下个元素,则返回 false 值。当然,若是一个空的数组,它也返回 false 值。要正确地处理可能是空的数组,可以使用 each() 函数。此函数看起来像 current() 函数,不同地方在于本函数使指针往后指到下一个元素,并返回新的指针处的元素值,意即指针后移,并返回下一个元素值。
参考 current() end() prev() reset()
pos
返回数组目前的元素。
语法: mixed pos(array array);
返回值: 混合类型资料
函数种类: 资料处理
内容说明
此函数其实就是 current() 函数。
参考
end() next() prev() reset()
数组处理函数库
prev
将数组的内部指针往前移动。
语法: mixed prev(array array);
返回值: 混合类型资料
函数种类: 资料处理
内容说明 这个函数返回数组前一个元素的内部指针,若没有前一个元素,则返回 false 值。当然,若是一个空的数组,它也返回 false 值。要正确地处理可能是空的数组,可以使用 each() 函数。此函数有点像 next() 函数,只是 prev() 函数是将指针往前移,而 next() 函数是将指针往后移。
参考 current() end() next() reset()
range
建立一个整数范围的数组。
语法: array range(int low, int high);
返回值: 数组
函数种类: 资料处理
内容说明 此函数建立一个由小到大的连续整数数组。在 shuffle() 函数有使用范例
参考 shuffle()
reset
将数组的指针指到数组第一个元素。
语法: mixed reset(array array);
返回值: 混合类型资料
函数种类: 资料处理
内容说明 本函数将数组的指针重设,将指针改指到数组的第一个元素。返回值的内容也是数组的第一个元素。
使用范例
技巧: kk@shonline.de 指出 (30-Jul-1998),当数组的资料不够稳定时,使用 reset() 会有警告信息。最常发生的时候是处理 HTML 表单(form)的输入资料时,若用户输入的资料不够充份,或用户故意增删输入 (input) 字段,就有可能会有警告信息。用 @reset() 的方式可使警告信息不出现 (在 reset() 前加 @),不过这只是掩耳盗铃的方式;要斧底抽薪的方法是使用 if (isset()) 的方式 (参见 4.48.14 isset() 函数),如下例
<?
if (isset($form_array)) {
reset($form_array);
while (list($k, $v) = each($form_array)) {
do_something($k, $v);
}
}
?>
参考 current() each() next() prev()
rsort
将数组的值由大到小排序。
语法: void rsort(array array);
返回值: 无
函数种类: 资料处理
内容说明
本函数将数组依由大到小的方式重排。
使用范例
<?
$fruits = array("lemon","orange","banana","apple");
rsort($fruits);
for(reset($fruits); list($key,$value) = each($fruits); ) {
echo "fruits[$key] = ".$value."n";
}
?>
处理后的结果为
fruits[0] = orange
fruits[1] = lemon
fruits[2] = banana
fruits[3] = apple
参考 arsort() asort() ksort() sort() usort()
shuffle
将数组的顺序弄混。
语法: void shuffle(array array);
返回值: 无
函数种类: 资料处理
内容说明 本函数将数组以随机的方式使全部元素重新乱排。
使用范例
<?
$numbers = range(1,20);
srand(time());
shuffle($numbers);
while (list(,$number) = each($numbers)) {
echo "$number ";
}
?>
注意:
ccunning@math.ohio-state.edu 指出 (31-May-1999),在 Solaris 上由于受了 libc 函数库的影响,会使本函数出现问题。目前解决的方式如下面的例子。(注: 或许之后新的 PHP 版本会修正这个问题。)
<?
function myshuffle($array) {
mt_srand((double) microtime()*1000000);
$num = count($array);
for ($i=0; $i<$num-1; $i++) {
$n = mt_rand($i+1,$num);
$temp = $array[$n];
$array[$n] = $array[$i];
$array[$i] = $temp;
}
}
$array = array(1,2,3,4,5,6,7,8,9,10);
myshuffle(&$array);
while (list(,$var)=each($array)) {
echo $var . " ";
}
?>
参考 arsort() asort() ksort() rsort() sort() usort()
sizeof
获知数组的大小。
语法: int sizeof(array array);
返回值: 整数
函数种类: 资料处理
内容说明
本函数以整数类型返回数组的元素个数。
参考 count()
sort
将数组排序。
语法: void sort(array array);
返回值: 无
函数种类: 资料处理
内容说明 本函数将数组依由小到大的方式重排。
使用范例
<?
$fruits = array("lemon","orange","banana","apple");
sort($fruits);
for(reset($fruits); list($key,$value) = each($fruits); ) {
echo "fruits[$key] = ".$value."n";
}
?>
返回的结果为
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
参考 arsort() asort() ksort() rsort() usort()
uasort
将数组依用户自定的函数排序。
语法: void uasort(array array, function cmp_function);
返回值: 无
函数种类: 资料处理
内容说明 本函数将数组依用户自定的方式重排,当然元素的索引和值仍然保持对应的关系。当您觉得需要自行设计排序的方式时,可以先自订处理函数,再使用本函数将数组值排序。
参考 arsort() asort() ksort() rsort() sort() uksort()
uksort
将数组的索引依用户自定的函数排序。
语法: void uksort(array array, function cmp_function);
返回值: 无
函数种类: 资料处理
内容说明 本函数将数组的索引依用户自定的方式重排,cmp_function 即用户自行开发的函数。
使用范例
<?
function mycompare($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array(4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");
uksort($a, mycompare);
while(list($key, $value) = each($a)) {
echo "$key: $valuen";
}
?>
上面的程序返回资料为
20: twenty
10: ten
4: four
3: three
参考 arsort() asort() ksort() rsort() sort() uasort()
usort
将数组的值依用户自定的函数排序。
语法: void usort(array array, function cmp_function);
返回值: 无
函数种类: 资料处理
内容说明
本函数将数组的值依用户自定的方式重排。若程序中需要使用特殊的排序方式,则可以使用这个函数。
使用范例
<?
function cmp($a,$b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array(3,2,5,6,1);
usort($a, cmp);
while(list($key,$value) = each($a)) {
echo "$key: $valuen";
}
?>
此例的返回值为
0: 6
1: 5
2: 3
3: 2
4: 1
参考 arsort() asort() ksort() rsort() sort()
最新评论