PHP编程中“数组”的基础知识
关于数组:PHPChina 开源社区门户EkI/~!b]M(X
PHP中的数组是复杂的,并且比许多其他高级语言中的数组更灵活。
I$U5L/O9{A0数组array是一组有序的变量,其中每个变量被叫做一个元素。
X2XQpR~0数组可以被编号或者相关联,也就是数组的元素可以分别根据数字索引或文本化字符串来访问PHPChina 开源社区门户k}|@9L/jQ
PHP中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值PHPChina 开源社区门户0M4zl%T7B+Yt Wf2R
1。创建数组
@W"`1iVVu0PHP提供创建数组的array()语言结构PHPChina 开源社区门户;_jP$H!Xi j
$numbers = array(5,4,3,2,1);
|uLO}O8C0$words = array("web","database","application");PHPChina 开源社区门户6p6VPt"zNq t }!Q
echo $numbers[2];
wA4OWoY/Or0echo $words[0];PHPChina 开源社区门户1H-bE&{Y
---------------------输出结果----------------------------------------
AM]nR/R5nX03webPHPChina 开源社区门户"D| ky q.k ~'^P
---------------------------------------------------------------------PHPChina 开源社区门户.u,F)k0^}l
默认情况下,数组的第一个元素的索引为0。数组中包含的值可以通过使用方括号[]语法来检索和修改
qUH+Jeu0$numbers[5] = 0;
YEld?0数字化索引的数组可以创建位从任何索引值开始PHPChina 开源社区门户-?JRq6Xr
$numbers = array(1=>"one","two","three","four");
4BG+H&uG.}!I-Z*R0也可以松散的索引
Ov)G9e"J v#E0$numbers = array(1=>"one",3=>"three",5=>"zero");
%szH1\L+X ?nO0可以通过给变量赋予一个没有参数的array()来创建空数组。然后可以通过使用方括号[]语法来添加值
O+Lz4SP8Kn.V4q0~0$error = array();PHPChina 开源社区门户8l ^)hzOQl cS
$error[] = "no error!!!";
h@5L$yf ~^gGb0$error[] = "second error!!!";PHPChina 开源社区门户B-|&I"Z d,h_o
echo $error[0];
Fcz;ydI+a9Gu e0echo $error[1];PHPChina 开源社区门户\/Q V"})z]WWc
---------------------输出结果----------------------------------------
$b7wv9Zb0no error!!!second error!!!PHPChina 开源社区门户$s6PZ"Sa%Sd'X?
---------------------------------------------------------------------PHPChina 开源社区门户:{2j]A!k
2.关联数组PHPChina 开源社区门户e0M3h2y`Tx9L
关联数组(associative array)使用字符串索引(或键)来访问存储在数组中的值PHPChina 开源社区门户 [5R*K)X!s$X {
关联索引的数组对于数据库层交互非常有用PHPChina 开源社区门户Z T"O r;c`c@*^
$newarray = array("first"=>1,"second"=>2,"third"=>3);PHPChina 开源社区门户OO(s\?
echo $newarray["second"];PHPChina 开源社区门户C3t \p1t B t0HC*\
$newarray["third"]=5;
G_ `Jw[6w?C0echo $newarray["third"];
c8b'B"ncCiQ w0---------------------输出结果----------------------------------------
@4[kVv1Z.rP025PHPChina 开源社区门户(ca0S8Lo+q#G.|
---------------------------------------------------------------------PHPChina 开源社区门户3{,hkr$L(r)ryl OW
3.异构数组PHPChina 开源社区门户~4D@9Y2YY~o
PHP数组可以包含不同种类的值
^)Zm_Ha5Af0$mixedBag = array("cat",42,8.5,false);PHPChina 开源社区门户8K/z @8p W2W
var_dump(mixedBag);PHPChina 开源社区门户sIC;?s._%W}]j
4.多维数组
hlF3Z7@4Z;M0创建包含数组的数组,数组维数没有限制,但是一般很难想象一个多于三维的数组的用法PHPChina 开源社区门户d"cT#` F\,]
$planets = array(array("MM",1,2),array("NN",3,4),array("BB",5,6),array("VV",7,8));PHPChina 开源社区门户]7|4p3{I r*x3Z*Ze"nT
print $planets[2][0];
V\n l"XyZL8r5w~Y8S0$planets2 = array("MM"=>array("AA"=>1,"SS"=>2),PHPChina 开源社区门户^9w#T5u}_9`/Z7y
"NN"=>array("DD"=>3,"FF"=>4),
SMu*W+H+f0"BB"=>array("GG"=>6,"HH"=>7,"PP"=>array("haha!!!!")),
[w"A _ rD+q5f0"VV"=>array("JJ"=>6,"KK"=>7,"LL"=>array("one","two")));PHPChina 开源社区门户OYB#}7T1H:oA3]
print $planets2["VV"]["LL"][0];
A+L3C r1e7BZ&j'E]K0---------------------输出结果----------------------------------------
*KET%tw c$~Fx0BBonePHPChina 开源社区门户{T7_@ Uq ]
---------------------------------------------------------------------PHPChina 开源社区门户 u9ez^Z KTS
5.使用循环访问数组PHPChina 开源社区门户(K/N5VaP.W5HG
遍历数组的方法有很多(使用while,for循环)或者foreach语句,最容易的是foreach 语句PHPChina 开源社区门户^Z:asl Mq2w
$length = array(0,107,202,400,475);PHPChina 开源社区门户c[fyAh!b)A3N
//将厘米转换为寸PHPChina 开源社区门户 wE,i~$NCfC r
for($i=0;$i<5;$i++)PHPChina 开源社区门户+RH#X tjv
{
;I;Sf}i|_O0echo ($length[$i]/3);
1o,AeN;cAMmz0}
!\;mKhMEp+K0$j=0;
xC2wB8OM0N@0while(isset($length[$j]))PHPChina 开源社区门户Fr'ocm1_]F0J
{
gF7U5QE4Vp'Z*Y;X$Rl{0echo ($length[$j]/3);PHPChina 开源社区门户8_ F9E3rx%G @"m
$j++;PHPChina 开源社区门户:i6~ j zcT,KK
}PHPChina 开源社区门户V3few+jXB;?
foreach($length as $cm)
vd/N$}"w8@0{
x7Kt2mH(c0echo ($cm/3);
L3HFsdC2j0}
:e3E `p^ta$Z2fX0---------------------输出结果----------------------------------------PHPChina 开源社区门户\*N NkP)j9I
0
y{I$^U4ot035.6666666667
C!itTs-g067.3333333333PHPChina 开源社区门户[@L,N0C+VX.mq
133.333333333PHPChina 开源社区门户.paEi'q.}0N bl
158.333333333PHPChina 开源社区门户#m}UR SM
0PHPChina 开源社区门户7y{t ME9a
35.6666666667
0nj!bD.|u#d067.3333333333PHPChina 开源社区门户6HR#G;F'PA%p(m"T
133.333333333PHPChina 开源社区门户)L)cUu'@9S Q
158.333333333
p:^%T/`3AC3j00PHPChina 开源社区门户_$H1vvU/V*KN6?
35.6666666667PHPChina 开源社区门户 }-g,I2fP
67.3333333333PHPChina 开源社区门户(Od(nOhRCJoRnp
133.333333333PHPChina 开源社区门户T5N/Lr`,j
158.333333333
6_"r4Y/]7[8tQybq)a0PHPChina 开源社区门户-o$Ro&nSh{-J:wm
---------------------------------------------------------------------
$x(?9H H6`1Ke\0foreach还可以迭代关联数组的值
x%Qa!PR4]m%p}0$sound = array("cow"=>"moo","dog"=>"woof",
2i!Rh4Br0Q+@rM0"pig"=>"oink","duck"=>"quack");
uU!}C7~)J&oK.L#NR0foreach ($sound as $animal=>$noice)
?8qv4xaOT0{
~W]4k&m-K~\0echo "$animal 得叫声是这样的 $noice $noice......";PHPChina 开源社区门户q FI/{)A%q[x|9E
}PHPChina 开源社区门户fje#N5d
---------------------输出结果----------------------------------------PHPChina 开源社区门户eR8wZ(Fa
cow 的叫声是这样的 moo moo......PHPChina 开源社区门户,d5r|fB(TE7p
dog 的叫声是这样的 woof woof......
5isdP N0pig 的叫声是这样的 oink oink......
,R g{S(wh I+Nv0duck 的叫声是这样的 quack quack......
i xXp.IV2U*y0
q&^9PB QB0---------------------------------------------------------------------PHPChina 开源社区门户5V vq5St u#`*Y
PHPChina 开源社区门户;vHhX)F)n
6.使用数组指针PHPChina 开源社区门户)AP/{"qe
与存储在数组中的键和关联值一起,PHP还拥有一个指向数组当前元素的内部索引,
5QpHH gO'Tn)\0有几个函数使用并更新该数组索引来提供对数组元素的访问PHPChina 开源社区门户)IugQT.IT(uG
$a = array("a","b","c","d","e","f");
(xzU i7~ |:l |O*|0echo current($a);PHPChina 开源社区门户e$E\,P Cf3sn\ `
each($a);PHPChina 开源社区门户T;j'B4Tp_
key($a);//目前数组的指针,返回其索引
:rhdy@8ZY E9l0echo current($a);//当前元素的值PHPChina 开源社区门户4\DzDQ b@y%?A
each($a);//返回当前元素的值并将内部索引指向下一个元素
@$f#X&OLLC`$k7hmr0each($a);
TYtut){"ypB.U0echo current($a);PHPChina 开源社区门户1H\\6`V
next($a);//指向下一个元素
/nZkT4b1~?I0echo current($a);PHPChina 开源社区门户'm8c%D0x| xNLb3z{
prev($a);//指向上一个元素
N5]!gZ:i/s0echo current($a);PHPChina 开源社区门户w rXr%Q$d2G
end($a);//指向最后一个元素
tp U[!p!MAK0echo current($a);
W*d6^} O+}.X0key($a);PHPChina 开源社区门户 FW_6} J
echo current($a);PHPChina 开源社区门户/I,}^'_h2t
---------------------输出结果----------------------------------------PHPChina 开源社区门户S d9p!AY9UC1F7W
abdedff
1_3W7mud1_T!D0---------------------------------------------------------------------PHPChina 开源社区门户KLO:q+N$Em
7.基本的数组函数PHPChina 开源社区门户Vy7BK9BaYuX v
integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量PHPChina 开源社区门户a8TW g3hA
number max(array numbers)//返回数组中的最大值
)jn b"lqnp"J0number min(array numbers)//返回数组中的最小值
b(B(uTFx0boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强制执行类型检查PHPChina 开源社区门户K\d Jt7r/`Ez
mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,PHPChina 开源社区门户5s:Qj!^1E,PMWO
找不到时返回false,找到的元素如果正好是第一个元素,则返回0,而PHP会自动转化为false所以需要使用===判断,如下
3xY,l G;^I#}:|i0$a = array("a","b","c","d","e","f");PHPChina 开源社区门户[;e|o}3X%Hz
$index = array_search("a",$a);PHPChina 开源社区门户 M4^yC7PPs"m7C]'x
if($index === false)
)Rg*k@V7IGc0echo "在数组a中未发现字符'a'";
3nIi7f@"Qe+tQ0elsePHPChina 开源社区门户RVg8f(I
echo "Index = $index";
$]?$JXQn7H0---------------------输出结果----------------------------------------
Y2R,Swk%xZ0Index = 0PHPChina 开源社区门户 LEEF7S?J+d B'c!m;X
---------------------------------------------------------------------
#u[(@ V7a Sm.r c9V0array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联PHPChina 开源社区门户Kg,@!r&hz
$a = array("a","b","c","d","e","f");PHPChina 开源社区门户B\7w BV
$newa = array_reverse($a);//直接翻转PHPChina 开源社区门户a,t3F D,OQ,ok
echo $newa[0];PHPChina 开源社区门户o R:CE)W
$newb = array_reverse($a,true);//依旧保留了索引和元素之间的关联
Z6D7\n'D0echo $newb[0];PHPChina 开源社区门户8Knd eF ]8g2K
---------------------输出结果----------------------------------------
N&nWI7~9K&d9jJ0faPHPChina 开源社区门户$GBr"c~@1S:SzK
---------------------------------------------------------------------PHPChina 开源社区门户nZ(V4Xu)X^i
sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)PHPChina 开源社区门户/Vm'T7X5A7s M X`P x
rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素)
tI\0~-`0n%wN[#G2z0可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序PHPChina 开源社区门户D&L;rD,MP
sort()、rsort()可以用于关联数组,但是 键 将丢失
Q_Eg:VL sfNt0asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联
,U HE.Eq"Z3xf7C)b%b0arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联
^X?(W5I~3ghB U0当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是访问元素的索引不改变PHPChina 开源社区门户-I8Z8V#W u8C"q
integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列PHPChina 开源社区门户.w s"yhX
integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列PHPChina 开源社区门户sXFN"x;Qd
usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合
]L5RV5iY$Vz%`0uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a等于b时返回0PHPChina 开源社区门户1m"ZwZ[2^!g.Y%kc)`N
$numbers = array(16,3,2,171,5,24,6,19);
o+j.j]Kx8l(Y |F;zY0sort($numbers);PHPChina 开源社区门户6VVO~` } ~U
foreach($numbers as $n)
.X2[%xn"p0echo $n." ";
`/Z(Q~U[0$numbers = array(16,3,2,171,5,24,6,19);PHPChina 开源社区门户/wy@A`J
rsort($numbers);
_,Y7nj&B"j3B0foreach($numbers as $n)
I,]/v4\ A0echo $n." ";PHPChina 开源社区门户2q9nk VJ7t"u[u
$numbers = array(16,3,2,171,5,24,6,19);
AV(r)o+Y0sort($numbers,SORT_STRING);PHPChina 开源社区门户G9w1Z0a T;cu*rf
foreach($numbers as $n)
:C1p5P/d:J e0z!Ni)N&Z0echo $n." ";
mH]#~b,w9e0
z(Aw8T+cI0$a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");
B#gh:a*e2hH} IU0asort($a);PHPChina 开源社区门户;z/[_ba[&VI
foreach ($a as $keyname=>$keyvalue)PHPChina 开源社区门户#V[A8K ^2v9zfS`
echo $keyvalue;PHPChina 开源社区门户v/` Y+XK_ v \
PHPChina 开源社区门户}Q&?`M|5Q:q~
$a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");PHPChina 开源社区门户Z{G_#r(e;[kA
ksort($a);PHPChina 开源社区门户)cn7zPGhe/`$a2^2vx
foreach ($a as $keyname=>$keyvalue)
HHbJO$]%j3G0echo $keyvalue;
vr$n@ l"V]0PHPChina 开源社区门户/i K;dV!Q4xs
//基于长度比较两个字符串
%["^#n zFd0function cmp_length($a,$b)
T3yZ0p[i5NJ0{PHPChina 开源社区门户{*J$y B!q%`U3x
if(strlen($a) < strlen($b))
3v!v4xiXgQ:I)o R0return -1;
d N(Fx'{,t0if(strlen($a) > strlen($b))
eM&L`XC%Z7DD{0return 1;
^s)A#_;w!F0return 0;PHPChina 开源社区门户g@!@*`kRq
}PHPChina 开源社区门户1pa*F$M:r
$animals = array("cow","ox","monkey","mimi");
apx-aG_!p0usort($animals,"cmp_length");
'qaM[Wh0foreach($animals as $an)PHPChina 开源社区门户;@r4n;O@Sb!c
echo $an;
B].lY6A#Mx ]&H
PHP中的数组是复杂的,并且比许多其他高级语言中的数组更灵活。
I$U5L/O9{A0数组array是一组有序的变量,其中每个变量被叫做一个元素。
X2XQpR~0数组可以被编号或者相关联,也就是数组的元素可以分别根据数字索引或文本化字符串来访问PHPChina 开源社区门户k}|@9L/jQ
PHP中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值PHPChina 开源社区门户0M4zl%T7B+Yt Wf2R
1。创建数组
@W"`1iVVu0PHP提供创建数组的array()语言结构PHPChina 开源社区门户;_jP$H!Xi j
$numbers = array(5,4,3,2,1);
|uLO}O8C0$words = array("web","database","application");PHPChina 开源社区门户6p6VPt"zNq t }!Q
echo $numbers[2];
wA4OWoY/Or0echo $words[0];PHPChina 开源社区门户1H-bE&{Y
---------------------输出结果----------------------------------------
AM]nR/R5nX03webPHPChina 开源社区门户"D| ky q.k ~'^P
---------------------------------------------------------------------PHPChina 开源社区门户.u,F)k0^}l
默认情况下,数组的第一个元素的索引为0。数组中包含的值可以通过使用方括号[]语法来检索和修改
qUH+Jeu0$numbers[5] = 0;
YEld?0数字化索引的数组可以创建位从任何索引值开始PHPChina 开源社区门户-?JRq6Xr
$numbers = array(1=>"one","two","three","four");
4BG+H&uG.}!I-Z*R0也可以松散的索引
Ov)G9e"J v#E0$numbers = array(1=>"one",3=>"three",5=>"zero");
%szH1\L+X ?nO0可以通过给变量赋予一个没有参数的array()来创建空数组。然后可以通过使用方括号[]语法来添加值
O+Lz4SP8Kn.V4q0~0$error = array();PHPChina 开源社区门户8l ^)hzOQl cS
$error[] = "no error!!!";
h@5L$yf ~^gGb0$error[] = "second error!!!";PHPChina 开源社区门户B-|&I"Z d,h_o
echo $error[0];
Fcz;ydI+a9Gu e0echo $error[1];PHPChina 开源社区门户\/Q V"})z]WWc
---------------------输出结果----------------------------------------
$b7wv9Zb0no error!!!second error!!!PHPChina 开源社区门户$s6PZ"Sa%Sd'X?
---------------------------------------------------------------------PHPChina 开源社区门户:{2j]A!k
2.关联数组PHPChina 开源社区门户e0M3h2y`Tx9L
关联数组(associative array)使用字符串索引(或键)来访问存储在数组中的值PHPChina 开源社区门户 [5R*K)X!s$X {
关联索引的数组对于数据库层交互非常有用PHPChina 开源社区门户Z T"O r;c`c@*^
$newarray = array("first"=>1,"second"=>2,"third"=>3);PHPChina 开源社区门户OO(s\?
echo $newarray["second"];PHPChina 开源社区门户C3t \p1t B t0HC*\
$newarray["third"]=5;
G_ `Jw[6w?C0echo $newarray["third"];
c8b'B"ncCiQ w0---------------------输出结果----------------------------------------
@4[kVv1Z.rP025PHPChina 开源社区门户(ca0S8Lo+q#G.|
---------------------------------------------------------------------PHPChina 开源社区门户3{,hkr$L(r)ryl OW
3.异构数组PHPChina 开源社区门户~4D@9Y2YY~o
PHP数组可以包含不同种类的值
^)Zm_Ha5Af0$mixedBag = array("cat",42,8.5,false);PHPChina 开源社区门户8K/z @8p W2W
var_dump(mixedBag);PHPChina 开源社区门户sIC;?s._%W}]j
4.多维数组
hlF3Z7@4Z;M0创建包含数组的数组,数组维数没有限制,但是一般很难想象一个多于三维的数组的用法PHPChina 开源社区门户d"cT#` F\,]
$planets = array(array("MM",1,2),array("NN",3,4),array("BB",5,6),array("VV",7,8));PHPChina 开源社区门户]7|4p3{I r*x3Z*Ze"nT
print $planets[2][0];
V\n l"XyZL8r5w~Y8S0$planets2 = array("MM"=>array("AA"=>1,"SS"=>2),PHPChina 开源社区门户^9w#T5u}_9`/Z7y
"NN"=>array("DD"=>3,"FF"=>4),
SMu*W+H+f0"BB"=>array("GG"=>6,"HH"=>7,"PP"=>array("haha!!!!")),
[w"A _ rD+q5f0"VV"=>array("JJ"=>6,"KK"=>7,"LL"=>array("one","two")));PHPChina 开源社区门户OYB#}7T1H:oA3]
print $planets2["VV"]["LL"][0];
A+L3C r1e7BZ&j'E]K0---------------------输出结果----------------------------------------
*KET%tw c$~Fx0BBonePHPChina 开源社区门户{T7_@ Uq ]
---------------------------------------------------------------------PHPChina 开源社区门户 u9ez^Z KTS
5.使用循环访问数组PHPChina 开源社区门户(K/N5VaP.W5HG
遍历数组的方法有很多(使用while,for循环)或者foreach语句,最容易的是foreach 语句PHPChina 开源社区门户^Z:asl Mq2w
$length = array(0,107,202,400,475);PHPChina 开源社区门户c[fyAh!b)A3N
//将厘米转换为寸PHPChina 开源社区门户 wE,i~$NCfC r
for($i=0;$i<5;$i++)PHPChina 开源社区门户+RH#X tjv
{
;I;Sf}i|_O0echo ($length[$i]/3);
1o,AeN;cAMmz0}
!\;mKhMEp+K0$j=0;
xC2wB8OM0N@0while(isset($length[$j]))PHPChina 开源社区门户Fr'ocm1_]F0J
{
gF7U5QE4Vp'Z*Y;X$Rl{0echo ($length[$j]/3);PHPChina 开源社区门户8_ F9E3rx%G @"m
$j++;PHPChina 开源社区门户:i6~ j zcT,KK
}PHPChina 开源社区门户V3few+jXB;?
foreach($length as $cm)
vd/N$}"w8@0{
x7Kt2mH(c0echo ($cm/3);
L3HFsdC2j0}
:e3E `p^ta$Z2fX0---------------------输出结果----------------------------------------PHPChina 开源社区门户\*N NkP)j9I
0
y{I$^U4ot035.6666666667
C!itTs-g067.3333333333PHPChina 开源社区门户[@L,N0C+VX.mq
133.333333333PHPChina 开源社区门户.paEi'q.}0N bl
158.333333333PHPChina 开源社区门户#m}UR SM
0PHPChina 开源社区门户7y{t ME9a
35.6666666667
0nj!bD.|u#d067.3333333333PHPChina 开源社区门户6HR#G;F'PA%p(m"T
133.333333333PHPChina 开源社区门户)L)cUu'@9S Q
158.333333333
p:^%T/`3AC3j00PHPChina 开源社区门户_$H1vvU/V*KN6?
35.6666666667PHPChina 开源社区门户 }-g,I2fP
67.3333333333PHPChina 开源社区门户(Od(nOhRCJoRnp
133.333333333PHPChina 开源社区门户T5N/Lr`,j
158.333333333
6_"r4Y/]7[8tQybq)a0PHPChina 开源社区门户-o$Ro&nSh{-J:wm
---------------------------------------------------------------------
$x(?9H H6`1Ke\0foreach还可以迭代关联数组的值
x%Qa!PR4]m%p}0$sound = array("cow"=>"moo","dog"=>"woof",
2i!Rh4Br0Q+@rM0"pig"=>"oink","duck"=>"quack");
uU!}C7~)J&oK.L#NR0foreach ($sound as $animal=>$noice)
?8qv4xaOT0{
~W]4k&m-K~\0echo "$animal 得叫声是这样的 $noice $noice......";PHPChina 开源社区门户q FI/{)A%q[x|9E
}PHPChina 开源社区门户fje#N5d
---------------------输出结果----------------------------------------PHPChina 开源社区门户eR8wZ(Fa
cow 的叫声是这样的 moo moo......PHPChina 开源社区门户,d5r|fB(TE7p
dog 的叫声是这样的 woof woof......
5isdP N0pig 的叫声是这样的 oink oink......
,R g{S(wh I+Nv0duck 的叫声是这样的 quack quack......
i xXp.IV2U*y0
q&^9PB QB0---------------------------------------------------------------------PHPChina 开源社区门户5V vq5St u#`*Y
PHPChina 开源社区门户;vHhX)F)n
6.使用数组指针PHPChina 开源社区门户)AP/{"qe
与存储在数组中的键和关联值一起,PHP还拥有一个指向数组当前元素的内部索引,
5QpHH gO'Tn)\0有几个函数使用并更新该数组索引来提供对数组元素的访问PHPChina 开源社区门户)IugQT.IT(uG
$a = array("a","b","c","d","e","f");
(xzU i7~ |:l |O*|0echo current($a);PHPChina 开源社区门户e$E\,P Cf3sn\ `
each($a);PHPChina 开源社区门户T;j'B4Tp_
key($a);//目前数组的指针,返回其索引
:rhdy@8ZY E9l0echo current($a);//当前元素的值PHPChina 开源社区门户4\DzDQ b@y%?A
each($a);//返回当前元素的值并将内部索引指向下一个元素
@$f#X&OLLC`$k7hmr0each($a);
TYtut){"ypB.U0echo current($a);PHPChina 开源社区门户1H\\6`V
next($a);//指向下一个元素
/nZkT4b1~?I0echo current($a);PHPChina 开源社区门户'm8c%D0x| xNLb3z{
prev($a);//指向上一个元素
N5]!gZ:i/s0echo current($a);PHPChina 开源社区门户w rXr%Q$d2G
end($a);//指向最后一个元素
tp U[!p!MAK0echo current($a);
W*d6^} O+}.X0key($a);PHPChina 开源社区门户 FW_6} J
echo current($a);PHPChina 开源社区门户/I,}^'_h2t
---------------------输出结果----------------------------------------PHPChina 开源社区门户S d9p!AY9UC1F7W
abdedff
1_3W7mud1_T!D0---------------------------------------------------------------------PHPChina 开源社区门户KLO:q+N$Em
7.基本的数组函数PHPChina 开源社区门户Vy7BK9BaYuX v
integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量PHPChina 开源社区门户a8TW g3hA
number max(array numbers)//返回数组中的最大值
)jn b"lqnp"J0number min(array numbers)//返回数组中的最小值
b(B(uTFx0boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强制执行类型检查PHPChina 开源社区门户K\d Jt7r/`Ez
mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,PHPChina 开源社区门户5s:Qj!^1E,PMWO
找不到时返回false,找到的元素如果正好是第一个元素,则返回0,而PHP会自动转化为false所以需要使用===判断,如下
3xY,l G;^I#}:|i0$a = array("a","b","c","d","e","f");PHPChina 开源社区门户[;e|o}3X%Hz
$index = array_search("a",$a);PHPChina 开源社区门户 M4^yC7PPs"m7C]'x
if($index === false)
)Rg*k@V7IGc0echo "在数组a中未发现字符'a'";
3nIi7f@"Qe+tQ0elsePHPChina 开源社区门户RVg8f(I
echo "Index = $index";
$]?$JXQn7H0---------------------输出结果----------------------------------------
Y2R,Swk%xZ0Index = 0PHPChina 开源社区门户 LEEF7S?J+d B'c!m;X
---------------------------------------------------------------------
#u[(@ V7a Sm.r c9V0array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联PHPChina 开源社区门户Kg,@!r&hz
$a = array("a","b","c","d","e","f");PHPChina 开源社区门户B\7w BV
$newa = array_reverse($a);//直接翻转PHPChina 开源社区门户a,t3F D,OQ,ok
echo $newa[0];PHPChina 开源社区门户o R:CE)W
$newb = array_reverse($a,true);//依旧保留了索引和元素之间的关联
Z6D7\n'D0echo $newb[0];PHPChina 开源社区门户8Knd eF ]8g2K
---------------------输出结果----------------------------------------
N&nWI7~9K&d9jJ0faPHPChina 开源社区门户$GBr"c~@1S:SzK
---------------------------------------------------------------------PHPChina 开源社区门户nZ(V4Xu)X^i
sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)PHPChina 开源社区门户/Vm'T7X5A7s M X`P x
rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素)
tI\0~-`0n%wN[#G2z0可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序PHPChina 开源社区门户D&L;rD,MP
sort()、rsort()可以用于关联数组,但是 键 将丢失
Q_Eg:VL sfNt0asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联
,U HE.Eq"Z3xf7C)b%b0arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联
^X?(W5I~3ghB U0当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是访问元素的索引不改变PHPChina 开源社区门户-I8Z8V#W u8C"q
integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列PHPChina 开源社区门户.w s"yhX
integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列PHPChina 开源社区门户sXFN"x;Qd
usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合
]L5RV5iY$Vz%`0uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a等于b时返回0PHPChina 开源社区门户1m"ZwZ[2^!g.Y%kc)`N
$numbers = array(16,3,2,171,5,24,6,19);
o+j.j]Kx8l(Y |F;zY0sort($numbers);PHPChina 开源社区门户6VVO~` } ~U
foreach($numbers as $n)
.X2[%xn"p0echo $n." ";
`/Z(Q~U[0$numbers = array(16,3,2,171,5,24,6,19);PHPChina 开源社区门户/wy@A`J
rsort($numbers);
_,Y7nj&B"j3B0foreach($numbers as $n)
I,]/v4\ A0echo $n." ";PHPChina 开源社区门户2q9nk VJ7t"u[u
$numbers = array(16,3,2,171,5,24,6,19);
AV(r)o+Y0sort($numbers,SORT_STRING);PHPChina 开源社区门户G9w1Z0a T;cu*rf
foreach($numbers as $n)
:C1p5P/d:J e0z!Ni)N&Z0echo $n." ";
mH]#~b,w9e0
z(Aw8T+cI0$a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");
B#gh:a*e2hH} IU0asort($a);PHPChina 开源社区门户;z/[_ba[&VI
foreach ($a as $keyname=>$keyvalue)PHPChina 开源社区门户#V[A8K ^2v9zfS`
echo $keyvalue;PHPChina 开源社区门户v/` Y+XK_ v \
PHPChina 开源社区门户}Q&?`M|5Q:q~
$a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");PHPChina 开源社区门户Z{G_#r(e;[kA
ksort($a);PHPChina 开源社区门户)cn7zPGhe/`$a2^2vx
foreach ($a as $keyname=>$keyvalue)
HHbJO$]%j3G0echo $keyvalue;
vr$n@ l"V]0PHPChina 开源社区门户/i K;dV!Q4xs
//基于长度比较两个字符串
%["^#n zFd0function cmp_length($a,$b)
T3yZ0p[i5NJ0{PHPChina 开源社区门户{*J$y B!q%`U3x
if(strlen($a) < strlen($b))
3v!v4xiXgQ:I)o R0return -1;
d N(Fx'{,t0if(strlen($a) > strlen($b))
eM&L`XC%Z7DD{0return 1;
^s)A#_;w!F0return 0;PHPChina 开源社区门户g@!@*`kRq
}PHPChina 开源社区门户1pa*F$M:r
$animals = array("cow","ox","monkey","mimi");
apx-aG_!p0usort($animals,"cmp_length");
'qaM[Wh0foreach($animals as $an)PHPChina 开源社区门户;@r4n;O@Sb!c
echo $an;
B].lY6A#Mx ]&H