当前位置:首页 > PHP教程 > php数组 > 列表

PHP遍历数组的6种方式总结

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-17 15:26:43 浏览: 评论:0 

数组的遍历是PHP一个常见的编程任务,而数组又分为一维数组、二维数组和多维数组,下面这篇文章主要给大家介绍了关于PHP遍历数组的6种方式,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。

在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容,那么问题来了,你一般怎么遍历并处理数组。

1、foreach

很熟悉吧,是不是你的最爱?

  1. $arr = ['a''b''c']; 
  2.  
  3. foreach ($arr as $key => $value) { 
  4.     $arr[$key] = $value . '_i'
  5.  
  6. print_r($arr); // ['a_i', 'b_i', 'c_i']; 

2、array_map

使用匿名函数的方式,处理数组里的每个元素,遍历完成后返回一个新的数组。

  1. $arr = ['a''b''c']; 
  2.  
  3. $arr = array_map(function ($item) { 
  4.     return $item . '_i'
  5. }, $arr); 
  6.  
  7. print_r($arr); // ['a_i', 'b_i', 'c_i']; 

你可以同时处理多个数组:

  1. $arr_1 = ['a''b''c']; 
  2. $arr_2 = ['你''好''吗''原''罪']; 
  3. // $arr_n = [...]; 
  4.  
  5. $arr = array_map(function ($item_1$item_2) { 
  6.     return $item_1 . '_' . $item_2 . '_i'
  7. }, $arr_1$arr_2); 
  8.  
  9. print_r($arr); // ['a_你_i', 'b_好_i', 'c_吗_i', '_原_i', '_罪_i'] 

是的,遍历的次数以最长的数组为准。

遍历3次之后,$arr_1 其实是完成了的,所以之后 $item_1 的值都是null

3、array_walk

以引用传递的形式遍历你的数组,没有返回值,而且只能处理一个数组。

  1. $arr = ['a''b''c']; 
  2.  
  3. array_walk($arrfunction (&$item) { 
  4.     $item = $item . '_i'
  5. }); 
  6.  
  7. print_r($arr); // ['a_i', 'b_i', 'c_i']; 

注意到 &$item 了吗,是的,多了个&,代表着你的形参是以引用传递接收数据的。你要做的就是想办法改变这个参数。

假如你处理的是二维数组,处理方式也是万变不离其宗的。

  1. $arr = [ 
  2.     ['name' => 'a'], 
  3.     ['name' => 'b'], 
  4.     ['name' => 'c'
  5. ]; 
  6.  
  7. array_walk($arrfunction (&$item) { 
  8.     $item['name'] = $item['name'] . '_i'
  9. }); 
  10.  
  11. print_r($arr); // [['name' => 'a_i'], ['name' => 'b_i'], ['name' => 'c_i']]; 

4、for

这应该是超级通用的语法了

  1. $arr = ['a''b''c']; 
  2.  
  3. for ($i = 0; $i < count($arr); ++$i) { 
  4.     $arr[$i] = $arr[$i] . '_i'
  5.  
  6. print_r($arr); // ['a_i', 'b_i', 'c_i']; 

不推荐使用,它的效率比不上foreach,而且写法上比foreach略繁琐。

5、each

哈哈,这个函数在PHP7.2已经被废弃了@deprecated,而且感觉特别古老的书写方式,这种写法的执行效率也不行,新手应该直接放弃。

  1. $arr = ['a''b''c']; 
  2.  
  3. while (list($key$value) = each($arr)) { 
  4.     $arr[$key] = $value . '_i'
  5.  
  6. print_r($arr); // ['a_i', 'b_i', 'c_i']; 

6、reset

准确的讲并不止reset一个函数,需要组合多个内置函数,平常写代码基本是用不上的:

  1. $arr = ['a''b''c']; 
  2. // reset() 指针切换到头部,其实默认就是指向开头,可以忽略这句 
  3. reset($arr); 
  4.  
  5. // current() 获取当前指针的元素值 
  6. while ($value = current($arr)) { 
  7.     // key() 获取当前指针的元素下标 
  8.     $arr[key($arr)] = $value . '_i'
  9.     // next() 指针移到下一个 
  10.     next($arr); 
  11.  
  12. print_r($arr); // ['a_i', 'b_i', 'c_i'];

Tags: PHP遍历数组

分享到: