PHP之数组遍历

数组在PHP中式一个非常强大的武器,用起来方便、容易,由于使用起来异常灵活,用它就可以实现数据结构中的链表、栈、队列、堆以及所谓的字典、集合等,也可以转换成XML格式。

1、使用for

for语句遍历数组不是一个号选择,一般不会用,局限性太大,因为数组的下标很多时候不连续,或者是既有整数下标又有字符串下标,但存在这么一个情况,恰好是索引数组,且它的下标是连续的,那么这也是一种方法。

<?php
    $array = array(‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘);
    $size = count($array);    //取得数组单元个数
    for($i=0; $i<$size; $i++)
        echo $array[$i].‘<br/>‘;

2、使用foreach

foreach比for更方便、灵活,一般使用它,使用时foreach($arr_name as $value),将前一个数组使用as关键字专为它的元素,当然这是针对一维数组而言,还可以将元素所在的键名取到,如下方式foreach($arr_name as $key=>$value)即可。

<?php
    $array = array(‘os‘=>‘Linux‘, ‘server‘=>‘Apache‘, ‘db‘=>‘mysql‘, ‘language‘=>‘PHP‘);
    foreach($array as $key=>$value){
        echo ‘key: ‘.$key.‘ --- value: ‘.$value.‘<br/>‘;
    }

运行结果:

3、list、each、while函数结合

each函数每作用于数组一次,指向内部元素的指针遍向后挪动一个单元,每次each返回一个固定格式的键/值对数组,具体是(1=>值, ‘value‘=>值, 0=>键, ‘key‘=>键)。下一次each作用时将移动到下一个元素,示例

<?php
    $arr = array(‘one‘=>‘a‘,‘two‘=>‘b‘, ‘three‘=>‘c‘);
    $lst = each($arr);
    echo ‘each=> <pre>‘;
    var_dump($lst); 

效果

list函数的作用是,赋给它一个数组变量,它会将该数组中的以整数为键值的元素按键值从小到大的顺序赋给自己的参数,如果参数不够填满参数为止,如果数组中值不够,则参数被赋为空值,代码接上

    list($key, $val) = $lst;
    echo ‘<br/>‘;
    echo ‘key: ‘.$key.‘ value: ‘.$val.‘<br/>‘;

效果

$lst数组变量中的值,键值为整数的分别是前面的1=>‘a‘和后面的0=>‘one,list函数的好处是即便键值小的、排在后边元素也会按照从小到大的顺序赋给list函数中的从前到后的参数。

由于each不循环数组,每each作用一下只移动一下指针,到数组末尾返回值为false,于是放在while中就最合适不过了

<?php
    $arr = array(‘one‘=>‘a‘,‘two‘=>‘b‘, ‘three‘=>‘c‘);
    while(list($key, $val) = each($arr)){
        echo $key.‘ => ‘.$val.‘<br/>‘;
    }

效果

4、使用数组内部指针移动函数

数组内部指针默认指向数组中的第一个元素,函数大致有,current():返回当前指针指向数组中位置的元素值;key():返回当前指针指向数组中位置的元素键;next():将指针移动到下一个元素位置;prev():将指针移动到前一个元素位置;reset():将数组指针一到那个到数组第一个元素的位置;end():将数组指针移动到数组最后一个元素的位置。它们作用的参数均为数组变量本身。

<?php
    echo ‘key:‘.key($arr).‘ current:‘.current($arr).‘<br/>‘;  //当前键和值,默认指向数组第一个元素
    next($arr);  //后移一个,指向第二个元素
    echo ‘key:‘.key($arr).‘ current:‘.current($arr).‘<br/>‘;  //当前键和值
    next($arr);   //再后移一个,指向第三个元素
    echo ‘key:‘.key($arr).‘ current:‘.current($arr).‘<br/>‘;  //当前键和值
    prev($arr);   //前移一个,指向第二个元素
    echo ‘key:‘.key($arr).‘ current:‘.current($arr).‘<br/>‘;  //当前键和值
    end($arr);    //移动到数组最后一个元素
    echo ‘key:‘.key($arr).‘ current:‘.current($arr).‘<br/>‘;  //当前键和值
    reset($arr);  //移动到数组第一个元素
    echo ‘key:‘.key($arr).‘ current:‘.current($arr).‘<br/>‘;  //当前键和值

效果

时间: 2024-10-24 10:51:38

PHP之数组遍历的相关文章

输出 一维数组中最大的数+数组遍历

1 //将数组中最大的数输出 2 //数组遍历 3 int[] arr = new int[]{2,4,1,6,10,11}; 4 System.out.println("输出一维数组 :"); 5 for(int i=0; i<arr.length;i++) 6 { 7 System.out.print(arr[i]+" "); 8 } 9 10 System.out.println(); 11 12 int max = arr[0]; 13 for(int

微信小程序多层嵌套循环,二级数组遍历

小程序中的遍历循环类似于angularJS的遍历. 二级数组遍历有一个坑.二级遍历wx:for循环的时候,需要注意.(代码如下) JS代码: data: { groups: [ [ { title: '狼图腾', cover: '../../img/mineBG.png' }, { title: '狼图腾', cover: '../../img/mineBG.png' }, ], [ { title: '狼图腾', cover: '../../img/mineBG.png' }, ], [ {

iOS中数组遍历的方法及比较

数组遍历是编码中很常见的一种需求,我们来扒一拔iOS里面都有什么样的方法来实现,有什么特点. 因为iOS是兼容C语言的,所以C语言里面的最最常见的for循环遍历是没有问题的. 本文中用的数组是获取的系统的语言数组,大约有30多个数据,虽然还不够模拟大批量的数据,但对于方法的验证是没有问题的了. NSArray *langArray = [[NSUserDefaults standardUserDefaults] arrayForKey:@"AppleLanguages"]; 第一种方法

PHP数组遍历详解

一.PHP数组简介 1.PHP数组的分类 按照下标的不同分为关联数组和索引数组①索引数组:下标从0开始依次增长②关联数组:下标为字符串格式,每个下标字符串与数组的值一一对应,(有点像对象的键值对) 下面详细介绍下索引数组与关联数组 ①.数组中可以同时存在索引数组和关联数组:②.数组中所有的索引数组如果不加指定会去掉关联项,默认增长:关联数组不占索引位     array(1,2,"one"=>3,4,5); //1/2/4/5的索引-->0,1,2,3③.如果关联数组的ke

二维数组遍历

问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 算法分析:可以直接遍历,不过时间复杂度太高,因为有序,可以从左下角查找,也可以从右上角查找. public class Array { //二维数组遍历 public boolean Find(int [][] array,int target) { for(int i = 0; i < array.length; i

2016/1/10 作业 1, 二维数组遍历输出求和 2,转置运算???? 3,九宫格?? 后两个存在问题

1 public class arr1 { 2 3 4 public static void main(String[] args) { 5 // 创建二维数组arr[][],输出二维数组所有元素的和. 6 7 int arr[][]={{1,3,5,7,9},{21,23,25,27,29}, 8 {12,14,16,18},{32,34,36,38}}; 9 int sum=0; 10 System.out.println("二维数组遍历"); 11 // for循环 遍历 求和

转 :asp教程.net c#数组遍历、排序、删除元素、插入、随机元素 数组遍历

asp教程.net c#数组遍历.排序.删除元素.插入.随机元素数组遍历 short[] sts={0,1,100,200};for(int i=0;i<sts.lenght;i++){  if(sts[i]>50) {  .....  }} 数组随机元素 public  hashtable  noorder(int count)         {             arraylist mylist = new arraylist();             hashtable ha

Javascript数组和php数组遍历对比介绍

javascripe 和 php 的数组都是 map 类型的,也就是 key 值类型不限制那种.下面我对比下俩种数组的遍历方式: 1 : javascript数组遍历使用了 in 这个操作符,例如 for(key in arr),则遍历过程中 key 会被赋值为 arr 数组中的key,通过 arr[key] 获取 value. for(key in arr){ console.log("arr[" + key + "] = " + arr[key]); } 2:p

PHP学习之中数组-遍历一维数组【2】

在PHP学习之中数组[1]中学会怎么创建一个数组,如果PHP学习之中数组[1]中的元素多的话,我们访问元素又是一个问题了,下面我们就使用for语句while,foreach来遍历我们的数组: <?php /* range()原型: * array range ( mixed $start , mixed $limit [, number $step = 1 ] ) * 参数说明: * start 序列的第一个值. limit 序列结束于 limit 的值. step 如果给出了 step 的值,

数组遍历的2种方式

for o in aa{ println(o) } for (index,value) in enumerate(aa){ println("\(index)\(value)") } 数组遍历的2种方式,布布扣,bubuko.com