PHP递归打印数组中所有元素

函数定义: 

//@patten:为打印前的字符串,不同的层次会增加该串打印的次数 
//@array:为要打印的数组 
function print_array($patten, $array){ 
  $retstr; 
  foreach($array as $value){ 
    if( is_array($value) ){ 
      $patten = $patten.$patten; 
      print_array($patten, $value); 
    } else { 
      echo "<p>".$patten."[".key($array)."]".": ".$value." <br/> ". "</p>"; 
    } 
  next($array); 
  } 
} 

调用方法:

print_array("-", $array); 

输出,打印sina微博:


-[created_at]: Sun Mar 25 16:35:50 +0800 2012
-[id]: 3427505904478654
-[mid]: 3427505904478654
-[idstr]: 3427505904478654
-[text]: 转发。
-[source]: iPhone客户端
-[favorited]:
-[truncated]:
-[in_reply_to_status_id]:
-[in_reply_to_user_id]:
-[in_reply_to_screen_name]:
-[geo]:
-[user]:
--[id]: 1721825977
--[idstr]: 1721825977
--[screen_name]: 许小年
--[name]: 许小年
--[province]: 11
--[city]: 1000
--[location]: 北京
--[description]:
--[url]: http://blog.sina.com.cn/xuxiaonian
--[profile_image_url]: http://tp2.sinaimg.cn/1721825977/50/1270102276/1
--[profile_url]: xuxiaonian
--[domain]: xuxiaonian
--[weihao]:
--[gender]: m
--[followers_count]: 3220389
--[friends_count]: 102
--[statuses_count]: 2249
--[favourites_count]: 489
--[created_at]: Thu Apr 01 00:00:00 +0800 2010
--[following]: 1
--[allow_all_act_msg]:
--[geo_enabled]: 1
--[verified]: 1
--[verified_type]: 0
--[remark]:
--[allow_all_comment]: 1
--[avatar_large]: http://tp2.sinaimg.cn/1721825977/180/1270102276/1
--[verified_reason]: 中欧国际工商学院经济学与金融学教授 许小年
--[follow_me]:
--[online_status]: 1
--[bi_followers_count]: 85
--[lang]: zh-cn
--[retweeted_status]:
----[created_at]: Sun Mar 25 15:14:44 +0800 2012
----[id]: 3427485494637159
----[mid]: 3427485494637159
----[idstr]: 3427485494637159
----[text]: 【观点·吴敬琏:中经济矛盾社会矛盾几乎到临界点】目前国家权力对市场的干预,对价格管控,造成很大权力寻租空间,腐败蔓延不能有效制止。这也同时带来经济问题社会问题变成了政治问题。1992年已明确的顶层设计是市场经济改革,可如今人们数典忘祖,忘了这个改革目标——今日,吴敬琏在岭南论坛表示。
----[source]: 新浪微博
----[favorited]:
----[truncated]:
----[in_reply_to_status_id]:
----[in_reply_to_user_id]:
----[in_reply_to_screen_name]:
----[thumbnail_pic]: http://ww3.sinaimg.cn/thumbnail/61e04755jw1drc2dpro6fj.jpg
----[bmiddle_pic]: http://ww3.sinaimg.cn/bmiddle/61e04755jw1drc2dpro6fj.jpg
----[original_pic]: http://ww3.sinaimg.cn/large/61e04755jw1drc2dpro6fj.jpg
----[geo]:
----[user]:
--------[id]: 1642088277
--------[idstr]: 1642088277
--------[screen_name]: 财经网
--------[name]: 财经网
--------[province]: 11
--------[city]: 5
--------[location]: 北京 朝阳区
--------[description]: 价值观决定影响力——《财经网》; 与您共同 “微观”这个时代的方方面面——《财经网微博》。
--------[url]: http://www.caijing.com.cn/
--------[profile_image_url]: http://tp2.sinaimg.cn/1642088277/50/1283204216/1
--------[profile_url]: caijing
--------[domain]: caijing
--------[weihao]:
--------[gender]: m
--------[followers_count]: 2069308
--------[friends_count]: 1405
--------[statuses_count]: 35761
--------[favourites_count]: 48
--------[created_at]: Fri Aug 28 00:00:00 +0800 2009
--------[following]:
--------[allow_all_act_msg]:
--------[geo_enabled]: 1
--------[verified]: 1
--------[verified_type]: 3
--------[remark]:
--------[allow_all_comment]: 1
--------[avatar_large]: http://tp2.sinaimg.cn/1642088277/180/1283204216/1
--------[verified_reason]: 财经网官方微博
--------[follow_me]:
--------[online_status]: 0
--------[bi_followers_count]: 835
--------[lang]: zh-cn
--------[reposts_count]: 2721
--------[comments_count]: 562
--------[mlevel]: 0
--------[visible]:
----------------[type]: 0
----------------[list_id]: 0
----[reposts_count]: 756
----[comments_count]: 190
----[mlevel]: 0
----[visible]:
--------[type]: 0
--------[list_id]: 0

### 什么是递归数组 递归数组是指通过递归函数操作数组的一种技术。递归的核心思想是将复杂问题分解成更简单的子问题,直到达到可以直接解决的程度为止。对于数组而言,递归通常用于遍历、查找、修改或生成新的数据结构。 --- ### PHP 中的递归数组实现示例 #### 示例 1:PHP 使用递归遍历多维数组 以下是一个使用递归遍历多维数组的例子: ```php function recursiveArrayTraversal($array) { foreach ($array as $element) { if (is_array($element)) { recursiveArrayTraversal($element); // 如果当前元素还是数组,则继续递归处理 } else { echo "$element\n"; // 输出叶子节点的内容 } } } // 测试用例 $array = [ 'a' => 1, 'b' => ['c' => 2, 'd' => [3, 4]], 'e' => 5 ]; recursiveArrayTraversal($array); ``` 上述代码展示了如何利用递归来深入访问嵌套数组中的每一个元素[^1]。 --- #### 示例 2:Java 使用递归数组和 下面展示了一个 Java 的例子,说明如何通过递归计算数组中所有元素的总和: ```java public class ArraySumRecursion { public static int sum(int[] array, int index) { if (index >= array.length) { return 0; // 基础条件:当索引超出范围时返回零 } return array[index] + sum(array, index + 1); // 当前项加上剩余部分的结果 } public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5}; System.out.println(sum(numbers, 0)); // 调用递归函数并打印结果 } } ``` 这段代码定义了一种基于递归的方法来逐步累加数组中的每一项直至完成整个过程[^2]。 --- ### Fibonacci 数列递归实现 Fibonacci 数列遵循特定规律,即每个数字等于其前面两个数字之和(除了初始两项外)。以下是采用递归形式求解第 n 位斐波那契数值的一个经典案例: ```java public class FibonacciSequence { public static long Fribonacci(long n){ if(n == 0 || n == 1){ return n; } return Fribonacci(n - 1) + Fribonacci(n - 2); } public static void main(String[] args){ System.out.println(Fribonacci(30)); // 计算第30个斐波那契数 } } ``` 注意,在实际应用中由于重复计算的原因可能导致效率低下,因此建议考虑动态规划优化版本。 --- ### 子数组生成器 —— PHP 实现 另一个常见的应用场景是从原始数组派生出所有的可能组合情况下的新数组集合。这里给出一段 php 程序片段作为示范: ```php function generateSubArrays($arr) { $result = [[]]; // 初始化为空集 foreach ($arr as $value) { $tempResult = []; foreach ($result as $existingSubset) { $newSubset = array_merge($existingSubset, [$value]); $tempResult[] = $newSubset; } $result = array_merge($result, $tempResult); } return $result; } // 示例输入 $inputArray = [1, 2]; $output = generateSubArrays($inputArray); print_r($output); ``` 此脚本会枚举指定列表内的每一种排列可能性,并将其存储到最终输出变量 `$output` 中去[^3]。 --- ### 关于数组基础概念回顾 为了更好地理解和运用这些高级技巧,我们还需要清楚一些基本知识点。例如,数组本质上是在内存里占据连续区域的一系列相同类型的单元格;而它们的位置则由各自对应的索引来唯一标识出来。当我们说 `int[] array={...}` 这样声明之后就可以很方便地按照下标随机存取其中的数据成员啦[^4]! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值