zl程序教程

您现在的位置是:首页 >  后端

当前栏目

数组处理函数库

数组 处理 函数库
2023-06-13 09:13:47 时间
array: 建立一个新的数组。 array_walk: 让用户自订函数能处理数组中的每一个元素。 arsort: 将数组的值由大到小排序。 asort: 将数组的值由小到大排序。 count: 计算变量或数组中的元素个数。 current: 返回数组中目前的元素。 each: 返回数组中下一个元素的索引及值。 end: 将数组的内部指针指到最后的元素。 key: 取得数组中的索引资料。 ksort: 将数组的元素依索引排序。 list: 列出数组中元素的值。 next: 将数组的内部指针向后移动。 pos: 返回数组目前的元素。 prev: 将数组的内部指针往前移动。 range: 建立一个整数范围的数组。 reset: 将数组的指针指到数组第一个元素。 rsort: 将数组的值由大到小排序。 shuffle: 将数组的顺序弄混。 sizeof: 获知数组的大小。 sort: 将数组排序。 uasort: 将数组依用户自定的函数排序。 uksort: 将数组的索引依用户自定的函数排序。 usort: 将数组的值依用户自定的函数排序。 array

建立一个新的数组。

语法: arrayarray(...);

返回值:数组

函数种类:资料处理

内容说明:返回的参数是数组类型。参数可以是带有=>运算子的索引。array()其实不是一个正规的函数,它主要是要用来表示数组。

使用范例:下面范例用显示如何建立一个二维数组,如何指定联合数组的键值,及如何略过和继续数组中的数字索引。

$fruits=array(
"fruits"=>array("a"=>"orange","b"=>"banana","c"=>"apple"),
"numbers"=>array(1,2,3,4,5,6),
"holes"=>array("first",5=>"second","third")
);

参考list()

array_walk
让使用者自订函数能处理数组中的每一个元素。

语法:intarray_walk(arrayarr,stringfunc);

返回值:整数

函数种类:资料处理

内容说明此函数使每个数组元素arr依序与函数名称func相对应。元素传送到函数func的第一个参数,若参数超过一个,则每次都会有警告信息。要处理警告信息,可在本函数前面加上"@"字符(变成@array_walk);或是使用error_reporting函数。

注意:使用者自订函数func真的会将数组元素arr依序代入,所以任何对元素所做的改变都会影响到数组本身。

使用范例

<?
$fruits=array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
functiontest_alter($item1){
$item1="bogus";
}functiontest_print($item2){
echo"$item2<br>n";
}array_walk($fruits,"test_print");
array_walk($fruits,"test_alter");
array_walk($fruits,"test_print");
?>
参考each()list()

arsort
将数组的值由大到小排序。
语法:voidarsort(arrayarray);
返回值:无
函数种类:资料处理内容说明这个函数将数组的值重新排序,由大至小排列。数组的索引亦跟着值的?顺序而变动。当您在程序中需要重新整理数组值的?顺序时,就可以使用这个函数。

使用范例
底下的范例返回的结果为
fruits[a]=orange
fruits[d]=lemon
fruits[b]=banana
fruits[c]=apple。
我们可以看到水果名(数组值)已按英文字母的顺序由z往a重新排序,而索引亦跟着值变动。
<?
$fruits=array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($fruits);
for(reset($fruits);$key=key($fruits);next($fruits)){
echo"fruits[$key]=".$fruits[$key]."n";
}
?>

参考asort()rsort()ksort()sort()

asort
将数组的值由小到大排序。
语法:voidasort(arrayarray);
返回值:无
函数种类:资料处理

内容说明这个函数将数组的值重新排序,由小至大排列。数组的索引亦跟着值的?顺序而变动。当您在程序中需要重新整理数组值的?顺序时,就可以使用这个函数。

使用范例
底下的范例返回的结果为
fruits[c]=apple
fruits[b]=banana
fruits[d]=lemon
fruits[a]=orange
我们可以看到水果名(数组值)已按英
文字母的顺序由a往z排序,而索引亦跟着值变动。
<?
$fruits=array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
asort($fruits);
for(reset($fruits);$key=key($fruits);next($fruits)){
echo"fruits[$key]=".$fruits[$key]."n";
}
?>

参考arsort()rsort()ksort()sort()

count
计算变量或数组中的元素个数。
语法:intcount(mixedvar);
返回值:整数
函数种类:资料处理

内容说明这个函数用来计算数组的元素个数(亦可将变量代入,只不过返回的整数将是1)。变量还没有配置时,返回值为0。变量若不是数组,返回值为1。

参考sizeof()isset()is_array()

current
返回数组中目前的元素。
语法:mixedcurrent(arrayarray);
返回值:混合类型资料
函数种类:资料处理

内容说明说明:每一个数组变量都有一个内部指针,指到它的每一个元素。此外,为了交互参考,数组有份所有元素的双向链结表。数组的内部指针指到原先插入的元素上,直到程序执行到有改动数组指针的函数。函数current()简单地返回数组元素中目前指到的数组内部指针。它不会改变指针的值,若数组指针指到内部指针表外,则返回false的值。

注意:若数组中包含空的元素(0或者""空字符串),则本函数会返回false值。要是目前元素是个零值的?空元素或者是超出数组指针,结果当然是未定的false值。遇到这种情形,可以使用each()函数会更适合。

参考end()next()prev()reset()

each
返回数组中下一个元素的索引及值。
语法:arrayeach(arrayarray);
返回值:数组
函数种类:资料处理

内容说明返回数组为目前数组指针的索引/值对。返回的数组有四个元素,依序为0,1,索引,及值。前述的0与索引为数组的索引,1与值则为数组元素的值。
使用范例
范例一:
<?
$foo=array("bob","fred","jussi","jouni");
$bar=each($foo);
?>
上面的例子,返回数组$bar的索引/值为
0=>0
1=>"bob"
key=>0
value=>"bob"

范例二:
<?
$foo=array("Robert"=>"Bob","Seppo"=>"Sepi");
$bar=each($foo);
?>
这个的例子,返回数组$bar的索引/值为
0=>"Robert"
1=>"Bob"
key=>"Robert"
value=>"Bob"

范例三:
each()函数最典型的例子是拿来与list()函数合用,如下例的$HTTP_POST_VARS变量。
<?
echo"POST所送出的值为:<br>";
while(list($key,$val)=each($HTTP_POST_VARS)){
echo"$key=>$val<br>";
}
?>

参考current()key()list()next()prev()reset()

end
将数组的内部指针指到最后的元素。
语法:end(arrayarray);
返回值:无
函数种类:资料处理

内容说明本函数会改变数组的内部指针,它将指针指到最后一个元素上。

参考current()each()next()reset()

key
取得数组中的索引资料。
语法:mixedkey(arrayarray);
返回值:混合类型资料
函数种类:资料处理
内容说明
本函数从目前数组的指针,返回其索引

参考current()next()

ksort
将数组的元素依索引排序。
语法:voidksort(arrayarray);
返回值:无
函数种类:资料处理
内容说明
本函数将数组中的元素依索引排序,排序后的索引和值仍然对应

使用范例
<?
$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
列出数组中元素的值。
语法:voidlist(...);
返回值:无
函数种类:资料处理

内容说明和array函数一样,不算是正规的函数。list()函数用在列出所有数组中的数值。

使用范例
下面的范例列出从MySQL数据库返回的数组资料。
<table>
<tr>
<th>员工姓名</th>
<th>薪资</th>
</tr>
<?php
$result=mysql($conn,"SELECTid,name,salaryFROMemployees");
while(list($id,$name,$salary)=mysql_fetch_row($result)){
print("<tr>n".
"<td><ahref="info.php3?id=$id">$name</a></td>n".
"<td>$salary</td>n".
"</tr>n");
}
?></table>

参考each()array()

next
将数组的内部指针向后移动。
语法:mixednext(arrayarray);
返回值:混合类型资料
函数种类:资料处理
内容说明这个函数返回数组下个元素的内部指针,若没有下个元素,则返回false值。当然,若是一个空的数组,它也返回false值。要正确地处理可能是空的数组,可以使用each()函数。此函数看起来像current()函数,不同地方在于本函数使指针往后指到下一个元素,并返回新的指针处的元素值,意即指针后移,并返回下一个元素值。

参考current()end()prev()reset()

pos
返回数组目前的元素。
语法:mixedpos(arrayarray);
返回值:混合类型资料
函数种类:资料处理
内容说明
此函数其实就是current()函数。
参考
end()next()prev()reset()

数组处理函数库
prev
将数组的内部指针往前移动。
语法:mixedprev(arrayarray);
返回值:混合类型资料
函数种类:资料处理
内容说明这个函数返回数组前一个元素的内部指针,若没有前一个元素,则返回false值。当然,若是一个空的数组,它也返回false值。要正确地处理可能是空的数组,可以使用each()函数。此函数有点像next()函数,只是prev()函数是将指针往前移,而next()函数是将指针往后移。

参考current()end()next()reset()

range
建立一个整数范围的数组。
语法:arrayrange(intlow,inthigh);
返回值:数组
函数种类:资料处理
内容说明此函数建立一个由小到大的连续整数数组。在shuffle()函数有使用范例
参考shuffle()

reset
将数组的指针指到数组第一个元素。
语法:mixedreset(arrayarray);
返回值:混合类型资料
函数种类:资料处理
内容说明本函数将数组的指针重设,将指针改指到数组的第一个元素。返回值的内容也是数组的第一个元素。
使用范例
技巧:kk@shonline.de指出(30-Jul-1998),当数组的资料不够稳定时,使用reset()会有警告信息。最常发生的时候是处理HTML表单(form)的输入资料时,若用户输入的资料不够充份,或用户故意增删输入(input)字段,就有可能会有警告信息。用@reset()的方式可使警告信息不出现(在reset()前加@),不过这只是掩耳盗铃的方式;要斧底抽薪的方法是使用if(isset())的方式(参见4.48.14isset()函数),如下例

<?
if(isset($form_array)){
reset($form_array);
while(list($k,$v)=each($form_array)){
do_something($k,$v);
}
}
?>

参考current()each()next()prev()

rsort
将数组的值由大到小排序。
语法:voidrsort(arrayarray);
返回值:无
函数种类:资料处理
内容说明
本函数将数组依由大到小的方式重排。
使用范例
<?
$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
将数组的顺序弄混。
语法:voidshuffle(arrayarray);
返回值:无
函数种类:资料处理
内容说明本函数将数组以随机的方式使全部元素重新乱排。
使用范例
<?
$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版本会修正这个问题。)
<?
functionmyshuffle($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
获知数组的大小。
语法:intsizeof(arrayarray);
返回值:整数
函数种类:资料处理
内容说明
本函数以整数类型返回数组的元素个数。
参考count()

sort
将数组排序。
语法:voidsort(arrayarray);
返回值:无
函数种类:资料处理
内容说明本函数将数组依由小到大的方式重排。
使用范例
<?
$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
将数组依用户自定的函数排序。
语法:voiduasort(arrayarray,functioncmp_function);
返回值:无
函数种类:资料处理
内容说明本函数将数组依用户自定的方式重排,当然元素的索引和值仍然保持对应的关系。当您觉得需要自行设计排序的方式时,可以先自订处理函数,再使用本函数将数组值排序。
参考arsort()asort()ksort()rsort()sort()uksort()

uksort
将数组的索引依用户自定的函数排序。
语法:voiduksort(arrayarray,functioncmp_function);
返回值:无
函数种类:资料处理
内容说明本函数将数组的索引依用户自定的方式重排,cmp_function即用户自行开发的函数。

使用范例
<?
functionmycompare($a,$b){
if($a==$b)return0;
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
将数组的值依用户自定的函数排序。
语法:voidusort(arrayarray,functioncmp_function);
返回值:无
函数种类:资料处理
内容说明
本函数将数组的值依用户自定的方式重排。若程序中需要使用特殊的排序方式,则可以使用这个函数。

使用范例
<?
functioncmp($a,$b){
if($a==$b)return0;
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()