设为首页 收藏本站
查看: 759|回复: 0

[经验分享] 入门:PHP编程“数组”的基础知识

[复制链接]

尚未签到

发表于 2015-11-18 03:57:21 | 显示全部楼层 |阅读模式
  关于数组:
  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(&quot;cow&quot;=>&quot;moo&quot;,&quot;dog&quot;=>&quot;woof&quot;,
&quot;pig&quot;=>&quot;oink&quot;,&quot;duck&quot;=>&quot;quack&quot;);
foreach ($sound as $animal=>$noice)
{
echo &quot;$animal 得叫声是这样的 $noice $noice......&quot;;
}
---------------------输出结果----------------------------------------
cow 的叫声是这样的 moo moo......
dog 的叫声是这样的 woof woof......
pig 的叫声是这样的 oink oink......
duck 的叫声是这样的 quack quack......
  ---------------------------------------------------------------------
6.使用数组指针
与存储在数组中的键和关联值一起,PHP还拥有一个指向数组当前元素的内部索引,
有几个函数使用并更新该数组索引来提供对数组元素的访问
$a = array(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;,&quot;e&quot;,&quot;f&quot;);
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(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;,&quot;e&quot;,&quot;f&quot;);
$index = array_search(&quot;a&quot;,$a);
if($index === false)
echo &quot;在数组a中未发现字符'a'&quot;;
else
echo &quot;Index = $index&quot;;
---------------------输出结果----------------------------------------
Index = 0
---------------------------------------------------------------------
array array_reverse(array source[,bool preserve_keys])//逆转数组,生成一个新数组,可选参数为true时,保留索引和元素之间的关联
$a = array(&quot;a&quot;,&quot;b&quot;,&quot;c&quot;,&quot;d&quot;,&quot;e&quot;,&quot;f&quot;);
$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.&quot; &quot;;
$numbers = array(16,3,2,171,5,24,6,19);
rsort($numbers);
foreach($numbers as $n)
echo $n.&quot; &quot;;
$numbers = array(16,3,2,171,5,24,6,19);
sort($numbers,SORT_STRING);
foreach($numbers as $n)
echo $n.&quot; &quot;;
$a = array(&quot;o&quot;=>&quot;kk&quot;,&quot;e&quot;=>&quot;zz&quot;,&quot;z&quot;=>&quot;hh&quot;,&quot;a&quot;=>&quot;rr&quot;);
asort($a);
foreach ($a as $keyname=>$keyvalue)
echo $keyvalue;
$a = array(&quot;o&quot;=>&quot;kk&quot;,&quot;e&quot;=>&quot;zz&quot;,&quot;z&quot;=>&quot;hh&quot;,&quot;a&quot;=>&quot;rr&quot;);
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(&quot;cow&quot;,&quot;ox&quot;,&quot;monkey&quot;,&quot;mimi&quot;);
usort($animals,&quot;cmp_length&quot;);
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(&quot;name&quot;=>&quot;zhangsan&quot;,10,100);
$b = array(&quot;name&quot;=>&quot;lisi&quot;,4,6,8);
$c = array_merge($a,$b);
var_dump($c);
//////////////////////////////////////////////////////////////////////////
---------------------输出结果----------------------------------------
array(6) { [&quot;name&quot;]=> string(4) &quot;lisi&quot; [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(&quot;name&quot;,&quot;math&quot;,&quot;china&quot;);
$b = array(&quot;zhangsan&quot;,4,6);
$c = array_combine($a,$b);
var_dump($c);
//////////////////////////////////////////////////////////////////////////
---------------------输出结果----------------------------------------
array(3) { [&quot;name&quot;]=> string(8) &quot;zhangsan&quot; [&quot;math&quot;]=> int(4) [&quot;china&quot;]=> int(6) }
---------------------------------------------------------------------
              版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140435-1-1.html 上篇帖子: Eclipse for PHP开发环境 下篇帖子: 50点提高PHP编程效率 引入缓存提升性能
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表