最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • php数组定义与变量销毁和一维数组排序

    本文章先是介绍关于php中的数组定义与数组的销毁,之后再用一个实例来说明一维数据的排序方法。

    PHP数组的定义,代码如下:

    1. $array = array('one','two','three'); 
    2. var_dump($array); 

    在本代码片段的第一行,定义了一个一维数组$array,第二行的时候我们格式化输出了这个数组,结果是这样的:

    1. array(3) { 
    2. [0]=> 
    3. string(3) "one" 
    4. [1]=> 
    5. string(3) "two" 
    6. [2]=> 
    7. string(5) "three" 

    现在兄弟解释一下这个输出结果,首先这个数组的输出结果的第一行,array(3)告诉我们这是个有三个元素的数组,首先0号元素是一个长度为3的字符串(string(3))…篇幅关系剩下两个就不说了吧,吼吼……,这说明什么呢?这说明在PHP中如果我们不为数组指定下标的话,那么他就自己自作主张的从零开始给我们弄一个下标出来——也就是PHP数组中的键名;再看看下边的例子:

    1. $array = array('one',”hello”=>'two','three'); 
    2. var_dump($array); 

    这一次我们定义数组的时候,为第二个元素指定了下标(从此以后,在本文中就叫做键名了,下标有点含糊不清!),第二个元素指定了键名(hello),咱们再看看输出结果,代码如下:

    1. array(3) { 
    2. [0]=> 
    3. string(3) "one" 
    4. ["hello"]=> 
    5. string(3) "two" 
    6. [1]=> 
    7. string(5) "three" 

    我想你也像我一样看到了一个很智能的现象,第一个元素的键名还是0——这个我们可以理解,因为我们没有指定,而PHP数组必须要有一个键名,PHP就自作主张从零开始创立了一个键名;第二个元素的时候,我们指定了键名,PHP就尊重我们的意见用了这个键名;复杂的事情在第三个元素,第三个元素,看起来也很简单,我们没有指定键名,PHP自动的把最大整数键名加上1,作为了键名。但是大家想过没有,如果我们把第一个元素的键名修改为“-5”,第二个元素键名不变,结果会是什么呢?我们拭目以待,代码如下:

    1. $array = array(-5=>'one',"hello"=>'two','three'); 
    2. var_dump($array); 

    如果你想当然的认为,第三个元素的键名应该是-4,那么我告诉你在PHP4.3.0之前这个想法是对的,但是之后就错了,现在也就是PHP4.3.0之后的版本你将看到如下结果:

    1. array(3) { 
    2. [-5]=> 
    3. string(3) "one" 
    4. ["hello"]=> 
    5. string(3) "two" 
    6. [0]=> 
    7. string(5) "three" 

    是的第三个元素是从0开始的,也就是不管你的负数有多小,下一个元素要是让PHP来定义键名的话,那么他就是从0开始——记住这个地方说的是,在现有的键名中如果最大的依然是个负数,不管负数有多小,PHP也是从零开始下一个键名。

    PHP数组的销毁很简单,像销毁其他变量一样。

    销毁整个数组:unset($array)

    销毁数组中的一个元素:unset($array[-5])

    不管在现实生活中还是程序世界里,顺序总是很重要——真不敢想象一个没有顺序的世界会什么样子!PHP数组也不例外。PHP提供了四组针对PHP数组进行排序的函数,前三种都是针对一维数组的,我们先说这三种,第四种对多维数组的排序在下一篇文章中说,那个有点复杂。

    第一组:sort 和 rsort,按照PHP数组键值的顺序asc和逆序desc进行排序,同时破坏原来数组的索引关系——其实是删除索引之后重新建立从0开始的数字索引,看一下例程,代码如下:

    1. <?php 
    2. $a = array("a"=>1,2); 
    3. sort($a); 
    4. var_dump($a); 
    5. rsort($a); 
    6. var_dump($a); 
    7. ?> 

    看一下第一个输出结果,第一个输出:

    1. array(2) { 
    2.   [0]=> 
    3.   int(1) 
    4.   [1]=> 
    5.   int(2) 

    第二个输出:

    1. array(2) { 
    2.   [0]=> 
    3.   int(5) 
    4.   [1]=> 
    5.   int(4) 

    发现没有我们原来定义的索引a哪里去了?哪里去了?可以肯定的说是被他们无情的删除了,你要是对原来的索引关系并不在意的话,可以使用他们!

    第二组函数:asort 和 arsort ,这两个函数就比较厉害一点了,只要他们可以保留数组原有的索引关系,把上例的sort 和 rsort 分别用这两个函数替换一下,看运行结果:

    1. array(2) { 
    2.   ["a"]=> 
    3.   int(1) 
    4.   [0]=> 
    5.   int(2) 
    6. array(2) { 
    7.   [0]=> 
    8.   int(2) 
    9.   ["a"]=> 
    10.   int(1) 

    这个一看就明白的,不用说了吧!

    第三组PHP数组排序函数:krsort 和 ksort 这两个不同于以上两组,这两函数是对键名进行排序的,大家可以把上例的函数替换成这两个,看看具体运行结果,这里也不说了,不然这个文章写的就太长了,怕有些兄弟没有耐心看到本文的重点,虽然重点就在下边!

    通过自定义函数对PHP数组进行排序,有三个函数分别是:

    uasort 通过自定义函数对PHP数组的键值进行排序,并且保留原来的索引关系。

    uksort 通过自定义函数对PHP数组的键名进行排序,并且保留原来的索引关系。

    usort通过自定义函数对PHP数组的键值进行排序,并且删除原来的索引关系,从零开始建立新的索引。

    这个地方当然需要一个例子,首先顶一个函数,这个函数需要接受两个参数,并且返回值是一定的,第一个参数等于第二个参数的时候返回0,小于的时候返回-1,大于返回1,代码如下:

    1. function cmp($a,$b){ 
    2.  $a+=1; 
    3.  $b+=3;//改变这些值之后进行比较 
    4.  
    5.  if($a==$breturn 0; 
    6.  return ($a&lt;$b)?-1:1; 
    7.  
    8. $a =array(1,4,3,5); 
    9. uasort($a,'cmp'); 
    10. var_dump($a); 

    输出结果:

    1. array(4) { 
    2.   [0]=> 
    3.   int(1) 
    4.   [3]=> 
    5.   int(5) 
    6.   [1]=> 
    7.   int(4) 
    8.   [2]=> 
    9.   int(3) 

    呵呵……是不是比不排序还乱呢?我们这里只是演示了使用的方法而已,具体你用到的时候自己搞吧!你要是不对这些数值进行操作之后再比较,例如我们这里:

    $a+=1;$b+=3;//改变这些值之后进行比较

    在PHP手册中,一共定义了74个数组函数,涵盖了PHP数组的定义,赋值,排序,数值操作,比较,以及对数组的键名,键值反转……等等我们几乎能够想到的所有功能。

    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » php数组定义与变量销毁和一维数组排序

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级