专业虚拟主机提供商! 正规合法诚信公司、拥有ICP/ISP双经营许可证
域名空间实时开通立即使用,几分钟即可完成
安全方便的网上支付,超强的域名空间管理程序
我要购买空间,请点这里
我要注册域名,请点这里
我要建设网站,请点这里
我要续费域名,请点这里
我要续费空间,请点这里
我要在线支付,请点这里
首 页 特惠套餐 域名注册 虚拟主机 托管租用 FTP空间 数据库 企业邮局 网站建设 联系我们 付款方式
 | 网站首页 | 虚拟主机资讯 | 域名注册资讯 | 托管租用资讯 | 网络编程 | 网站备案 | 系统安全 | 源码下载 | 
您现在的位置: IDC资讯网 >> 网络编程 >> php编程 >> 正文
新手入门:PHP编程中“数组”的基础知识           ★★★
新手入门:PHP编程中“数组”的基础知识
点击数: 更新时间:2009-9-25 15:54:52

关于数组:

php中的数组是复杂的,并且比许多其他高级语言中的数组更灵活。数组array是一组有序的变量,其中每个变量被叫做一个元素。数组可以被编号或者相关联,也就是数组的元素可以分别根据数字索引或文本化字符串来访问

php中,数组可以包含标量(整数,布尔,字符串,浮点数)或复合值(对象甚至其他数组),并且可以包含不同类型的值

1。创建数组

php提供创建数组的array()语言结构

$numbers = array(5,4,3,2,1);

$words = array("web","database","application");

echo $numbers[2];

echo $words[0];

---------------------输出结果----------------------------------------

3web

---------------------------------------------------------------------

默认情况下,数组的第一个元素的索引为0。数组中包含的值可以通过使用方括号[]语法来检索和修改

$numbers[5] = 0;

数字化索引的数组可以创建位从任何索引值开始

$numbers = array(1=>"one","two","three","four");

也可以松散的索引

$numbers = array(1=>"one",3=>"three",5=>"zero");

可以通过给变量赋予一个没有参数的array()来创建空数组。然后可以通过使用方括号[]语法来添加值

$error = array();

$error[] = "no error!!!";

$error[] = "second error!!!";

echo $error[0];

echo $error[1];

---------------------输出结果----------------------------------------

no error!!!second error!!!

---------------------------------------------------------------------

2.关联数组

关联数组(associative array)使用字符串索引(或键)来访问存储在数组中的值

关联索引的数组对于数据库层交互非常有用

$newarray = array("first"=>1,"second"=>2,"third"=>3);

echo $newarray["second"];

$newarray["third"]=5;

echo $newarray["third"];

---------------------输出结果----------------------------------------

25

---------------------------------------------------------------------

3.异构数组

php数组可以包含不同种类的值

$mixedBag = array("cat",42,8.5,false);

var_dump(mixedBag);

4.多维数组

创建包含数组的数组,数组维数没有限制,但是一般很难想象一个多于三维的数组的用法

$planets = array(array("MM",1,2),array("NN",3,4),array("BB",5,6),array("VV",7,8));

print $planets[2][0];

$planets2 = array("MM"=>array("AA"=>1,"SS"=>2),

"NN"=>array("DD"=>3,"FF"=>4),

"BB"=>array("GG"=>6,"HH"=>7,"PP"=>array("haha!!!!")),

"VV"=>array("JJ"=>6,"KK"=>7,"LL"=>array("one","two")));

print $planets2["VV"]["LL"][0];

---------------------输出结果----------------------------------------

BBone

---------------------------------------------------------------------

5.使用循环访问数组

遍历数组的方法有很多(使用while,for循环)或者foreach语句,最容易的是foreach 语句

$length = array(0,107,202,400,475);

//将厘米转换为寸

for($i=0;$i<5;$i++)

{

echo ($length[$i]/3);

}

$j=0;

while(isset($length[$j]))

{

echo ($length[$j]/3);

$j++;

}

foreach($length as $cm)

{

echo ($cm/3);

}

---------------------输出结果----------------------------------------

0

35.6666666667

67.3333333333

133.333333333

158.333333333

0

35.6666666667

67.3333333333

133.333333333

158.333333333

0

35.6666666667

67.3333333333

133.333333333

158.333333333

---------------------------------------------------------------------

foreach还可以迭代关联数组的值

$sound = array("cow"=>"moo","dog"=>"woof",

"pig"=>"oink","duck"=>"quack");

foreach ($sound as $animal=>$noice)

{

echo "$animal 得叫声是这样的 $noice $noice......";

}

---------------------输出结果----------------------------------------

cow 的叫声是这样的 moo moo......

dog 的叫声是这样的 woof woof......

pig 的叫声是这样的 oink oink......

duck 的叫声是这样的 quack quack......

---------------------------------------------------------------------

6.使用数组指针

与存储在数组中的键和关联值一起,php还拥有一个指向数组当前元素的内部索引,

有几个函数使用并更新该数组索引来提供对数组元素的访问

$a = array("a","b","c","d","e","f");

echo current($a);

each($a);

key($a);//目前数组的指针,返回其索引

echo current($a);//当前元素的值

each($a);//返回当前元素的值并将内部索引指向下一个元素

each($a);

echo current($a);

next($a);//指向下一个元素

echo current($a);

prev($a);//指向上一个元素

echo current($a);

end($a);//指向最后一个元素

echo current($a);

key($a);

echo current($a);

---------------------输出结果----------------------------------------

abdedff

---------------------------------------------------------------------

7.基本的数组函数

integer count(mixed var)//在数组中返回元素的个数,也可用于任何的变量

number max(array numbers)//返回数组中的最大值

number min(array numbers)//返回数组中的最小值

boolean in_array(mixed needle,array haystack[,bollean strict])//查找数组中的值,第三个参数可选,强制执行类型检查

mixed array_search(mixed needle,array haystack[,boolean strict])//返回 键 而不是布尔值,

找不到时返回false,找到的元素如果正好是第一个元素,则返回0,而php会自动转化为false所以需要使用===判断,如下

$a = array("a","b","c","d","e","f");

$index = array_search("a",$a);

if($index === false)

echo "在数组a中未发现字符'a'";

else

echo "Index = $index";

---------------------输出结果----------------------------------------

Index = 0

---------------------------------------------------------------------

array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联

$a = array("a","b","c","d","e","f");

$newa = array_reverse($a);//直接翻转

echo $newa[0];

$newb = array_reverse($a,true);//依旧保留了索引和元素之间的关联

echo $newb[0];

---------------------输出结果----------------------------------------

fa

---------------------------------------------------------------------

sort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素)

rsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素)

可选参数可以指定为按数字方式SORT_NUMERIC还是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序

sort()、rsort()可以用于关联数组,但是 键 将丢失

asort(array subject[,integer sort_flag])//根据 值 进行升序排列(在原数组中重新排列元素),保持键值关联

arsort(array subject[,integer sort_flag])//根据 值 进行降序排列(在原数组中重新排列元素),保持键值关联

当asort() arsort()用于非关联数组时,元素按排序后的次序重新排列,但是访问元素的索引不改变

integer ksort(ayyay subject [,integer sort_flag])//根据 键或索引 进行升序排列

integer krsort(ayyay subject [,integer sort_flag])//根据 键或索引 进行降序排列

usort(array subject, string compare_function)//根据用户定义排序,用户定义自己的排序规则函数,但函数必须符合

uasort(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时返回0

$numbers = array(16,3,2,171,5,24,6,19);

sort($numbers);

foreach($numbers as $n)

echo $n." ";

$numbers = array(16,3,2,171,5,24,6,19);

rsort($numbers);

foreach($numbers as $n)

echo $n." ";

$numbers = array(16,3,2,171,5,24,6,19);

sort($numbers,SORT_STRING);

foreach($numbers as $n)

echo $n." ";

$a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");

asort($a);

foreach ($a as $keyname=>$keyvalue)

echo $keyvalue;

$a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");

ksort($a);

foreach ($a as $keyname=>$keyvalue)

echo $keyvalue;

//基于长度比较两个字符串

function cmp_length($a,$b)

{

if(strlen($a) < strlen($b))

return -1;

if(strlen($a) > strlen($b))

return 1;

return 0;

}

$animals = array("cow","ox","monkey","mimi");

usort($animals,"cmp_length");

foreach($animals as $an)

echo $an;

---------------------输出结果----------------------------------------

2 3 5 6 16 19 24 171 171 24 19 16 6 5 3 2 16 171 19 2 24 3 5 6 hhkkrrzzrrzzkkhhoxcowmimimonkey

---------------------------------------------------------------------

array_merge($a,$b)//组合数组,个人认为是比较有趣的函数之一,从两个数组生成一个数组,具有相同 键 的值会被覆盖

////////////////////////////代码部分////////////////////////////////////////

$a = array("name"=>"zhangsan",10,100);

$b = array("name"=>"lisi",4,6,8);

$c = array_merge($a,$b);

var_dump($c);

//////////////////////////////////////////////////////////////////////////

---------------------输出结果----------------------------------------

array(6) { ["name"]=> string(4) "lisi" [0]=> int(10) [1]=> int(100) [2]=> int(4) [3]=> int(6) [4]=> int(8) }

---------------------------------------------------------------------

array array_combine(array $a,array $b)//a数组的值为新数组的键,b数组的值为新数组的值,数组长度不同时,返回false

////////////////////////////代码部分////////////////////////////////////////

$a = array("name","math","china");

$b = array("zhangsan",4,6);

$c = array_combine($a,$b);

var_dump($c);

//////////////////////////////////////////////////////////////////////////

---------------------输出结果----------------------------------------

array(3) { ["name"]=> string(8) "zhangsan" ["math"]=> int(4) ["china"]=> int(6) }

---------------------------------------------------------------------


以上内容均来自网络,由 稳速网络 搜集整理,如有侵权请联系我们立即删除,如转载请注明原文出处,并保留以下内容。
    [稳速网络] http://www.765.com.cnhttp://www.wsu.cn 是深圳市稳速网络科技有限公司的网络服务品牌,专业经营域名注册虚拟主机网站建设服务器租用托管等业务。经过多年的高速发展,“稳速网络”已经成为我国一家知名的互联网服务提供商。
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新推荐  更多内容
    最新热门  更多内容
    资讯中心首页
    | 虚拟主机资讯 | 域名注册资讯 | 托管租用资讯 | 网络编程 | 网站备案 | 系统安全 | 源码下载 |
    关于我们 | 联系我们 | 产品价格 | 代理加盟 | 咨询反馈 | 诚聘英才 | 在线对话系统 | ASP技术网 | 帮助中心 | 网站地图
    ICP/ISP证B2-20050322
    ICP/ISP经营许可证编号:粤ICP证B2-20050322 网站备案号:粤B2-20050322号
    客服热线:0755-26499456 0755-26499435 [共8线] 24小时值班:0755-21852765 [更多]
    客服QQ:
    [ 63103 ]
    [ 959260 ]
    代理咨询:
    [ 519065 ]
    [更多]
    客户服务中心:深圳市南山区桃园路前海金岸金丰阁706  邮编:518052
    本站推广词:动态空间 | 网站空间 | 虚拟主机 | 深圳网站建设 | 空间购买 | 域名空间 | ASP空间申请购买
    服务范围:广州·深圳·东莞·珠海·汕头·惠州·中山·佛山·上海·重庆等全国其它地区
    广东省深圳市稳速网络科技有限公司版权所有 严禁以任何形式进行复制、抄袭