PHP 递归处理数组,并组合成新的数组/**
* 多维数组递归合并
*/
function multimerge(){
$arrs = func_get_args();
$merged = array();
while($arrs){
$array = array_shift($arrs);
if(!$array){
continue;
}
foreach ($array as $key = $value){
if (is_string($key)){
if (is_array($value)array_key_exists($key, $merged)is_array($merged[$key])){
$merged[$key] = call_user_func(__FUNCTION__, $merged[$key], $value);
}else{
$merged[$key] = $value;
}
}else{
$merged[] = $value;
}
}
}
return $merged;
}
$a1 = array('user' = array('name' = 'tony', 'score' = 23));
$a2 = array('user' = array('name' = 'tony', 'score' = 255), 'name' ='tom');
$a3 = array('user' = array('name' = 'tony', 'score' = 288, 'test' = 'abc'), 'name' ='jack');
$result= multimerge($a1, $a2, $a3);
var_dump($result);
PHP:数值数组叠加的递归方法-数值数组叠加的递归方法:几个相同格式的数组的对应项叠加,得到一个此种格式的数组
-@param array(数组1, 数组2, ...)
-@return array 数组为上面数组1,数组2,...的对应项叠加
php递归拼接数组你的循环有问题 , 递归的时候没有重新赋值
while($row=mysql_fetch_array($res)){
array_push($arr,$row['ID']);
$arr = $this-push_id($arr,$row['ID']);//注意这行
}
PHP怎么递归下面我举一个其他的例子,虽然不是族谱,但是原理都是一样的 。
在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性 。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类 。
递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存 , 函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据 。
Mysql
首先我们准备一张数据表class,记录商品分类信息 。表中有三个字段,id:分类编号,主键自增长;title:分类名称;pid:所属上级分类id 。
class表结构:
CREATE TABLE IF NOT EXISTS `class` (
`id` mediumint(6) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`pid` mediumint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
插入数据后,如图:
PHP
根据不同的需求 , 我们提供两种不同格式的自定义函数,一种是返回字符串,一种是返回数组,两种函数都使用了递归方法 。先看返回字符串格式的函数:
function get_str($id = 0) {
global $str;
$sql = "select id,title from class where pid= $id";
$result = mysql_query($sql);//查询pid的子类的分类
if($resultmysql_affected_rows()){//如果有子类
$str .= 'ul';
while ($row = mysql_fetch_array($result)) { //循环记录集
$str .= "li" . $row['id'] . "--" . $row['title'] . "/li"; //构建字符串
get_str($row['id']); //调用get_str(),将记录集中的id参数传入函数中,继续查询下级
}
$str .= '/ul';
}
return $str;
}
以上函数get_str()通过递归,不断查询下级分类,并最终返回字符串,大家可以根据项目需求修改其中的str,最终生成一个无限分级列表:
include_once('connect.php'); //连接数据库,connect.php文件自己写一个啊
echo get_str(0); //输出无限级分类
效果如:
接着我们来看返回数组格式的函数,一样要使用递归:
function get_array($id=0){
$sql = "select id,title from class where pid= $id";
$result = mysql_query($sql);//查询子类
$arr = array();
if($resultmysql_affected_rows()){//如果有子类
推荐阅读
- 常用sqlserver查询语句,sqlserver2000查询语句
- chatgpt预测足彩比分,足彩比分预测最准确的
- 服务器如何租用,服务器租用租赁
- 什么手机可以放视频通话的简单介绍
- php实现数据库的修改 php实现数据库增删改查
- 硬盘装光驱了怎么启动系统,光驱加装硬盘后电脑读不出
- 如何形成教育合力ppt,如何形成教育合力
- 拍摄配饰运用什么手法,拍摄配饰运用什么手法好
- php图片怎么上传数据 php上传图片到指定文件夹