当前位置:  编程技术>php
本页文章导读:
    ▪有关php数组合并与递归合并的例子      曾经,那些如风一样的日子里,对array_merge、array_merge_recursive这两个函数一直属于是有概念,没实践的状态。偶然遇见这样一个面试问题:关于同key的情况,结果是怎么样的? 通过以下的例子.........
    ▪php 递归 无限级分类并返回数组的例子      php 递归 无限级分类并返回数组的例子,有需发的朋友可以参考下。 代码如下: <?php /** * 递归 无限级分类 返回数组 * link:www. * date:2013/2/21 */ $conn = mysql_connect('localhost','root','123456'); .........
    ▪有关PHP数组递归遍历的一点理解      首先,定义一个多个层级的数组。 1、首先是有键值对的数组; 2、其中部分只有值没有键;   代码如下: <?php /**   desc:数组 */ $arr = array (              "1" => 'test',       .........

[1]有关php数组合并与递归合并的例子
    来源: 互联网  发布时间: 2013-12-24

曾经,那些如风一样的日子里,对array_merge、array_merge_recursive这两个函数一直属于是有概念,没实践的状态。偶然遇见这样一个面试问题:关于同key的情况,结果是怎么样的?

通过以下的例子,把这两个函数各执行一次,便可以充分理解这两个函数的概念。
 

代码如下:

<?php
/**
  desc:数组合并
  link:www.
  date:2013/2/22
*/
$a = array( 'a' => 1, 'b' => 2 );
$b = array( 'b' => 3, 'd' => 4 );

//数组合并
$array_merge = array_merge( $a, $b );
echo '<pre>';
print_r( $array_merge );

//数组递归合并
$array_merge_recursive = array_merge_recursive( $a, $b );
print_r( $array_merge_recursive );
echo '</pre>';
?>

输出结果:
Array
(
    [a] => 1
    [b] => 3
    [d] => 4
)
Array
(
    [a] => 1
    [b] => Array
        (
            [0] => 2
            [1] => 3
        )

    [d] => 4
)

我们可以看出:
array_merge遇到同值的情况是第二个数组key覆盖第一个数组key,而array_merge_recursive函数则对同值数组采取了下标合并。


    
[2]php 递归 无限级分类并返回数组的例子
    来源: 互联网  发布时间: 2013-12-24

php 递归 无限级分类并返回数组的例子,有需发的朋友可以参考下。

代码如下:

<?php
/**
* 递归 无限级分类 返回数组
* link:www.
* date:2013/2/21
*/
$conn = mysql_connect('localhost','root','123456');
mysql_select_db('test');
mysql_query("set names 'utf8'");

function getCate($pid = 0)
{
$sql = "select * from cate where pid=".$pid;
$res = mysql_query($sql);
if($res)
{
while($row = mysql_fetch_assoc($res)){
$categories[] = $row;
}
}

if(0 < count($categories))
{
for($i = 0; $i < count($categories); $i++)
{
$categories[$i]['child'] = getCate($categories[$i]['id']);
}

}

return $categories;
}

//调用
$cate = getCate(0);
?>

您可能感兴趣的文章:
php无限级分类的递归函数
php实现无限级缓存的类的扩展的代码
php与js制作的无限级可伸缩菜单
php与mysql实现的无限级分类
php把无限级分类生成数组的类
对ecshop中的无限级分类的分析
php写的无限级selectTree类
php用递归方法实现无限级分类的代码

    
[3]有关PHP数组递归遍历的一点理解
    来源: 互联网  发布时间: 2013-12-24

首先,定义一个多个层级的数组。

1、首先是有键值对的数组;
2、其中部分只有值没有键;
 

代码如下:
<?php
/**
  desc:数组
*/
$arr = array ( 
            "1" => 'test', 
            '2' => 'me', 
            array ( 
                    "3" => "beij", 
                    "4" => "zz"  
            ), 
            "45", 
            array ( 
                    "5" => "5", 
                    "6" => "ewrwer", 
                    "7" => "ssss", 
                    array ( 
                            "8" => "ssd", 
                            "9" => "bdex"  
                    ), 
                    "10", 
                    "11"  
            )  
    ); 
?>
 

接下来,编写递归函数打印这个数组:
 

代码如下:
<?php
/**
  desc:递归遍历数组
  link:www.
  date:2013/2/22
*/
function RecursiveArr($patten, $array) { 
        foreach ( $array as $value ) { 
            if (is_array ( $value )) { 
                $patten = $patten . $patten; 
                RecursiveArr ( $patten, $value ); 
            } else { 
                echo "<p>" . $patten . "【" . key ( $array ) . "】" . ": " . $value . " <br/> " . "</p>"; 
                <span ><strong>next ( $array ); // 给key赋值后需要移动到下一个,key才会更新</strong></span> 
            } 
        } 
    } 
?>


调用示例:
 

代码如下:
RecursiveArr ( '-', $arr ); 

出现下面图中的结果:

从上面的运行结果图可以看出,发现有些键是重复的。
为了比对区别和联系,接下来再看段代码:
 

代码如下:
<?php
/**
  desc:递归遍历数组
  link:www.
  date:2013/2/22
*/
function RecursiveArr($patten, $array) { 
    foreach ( $array as $value ) { 
            if (is_array ( $value )) { 
                $patten = $patten . $patten; 
                RecursiveArr ( $patten, $value ); 
            } else { 
                echo "<p>" . $patten . "【" . key ( $array ) . "】" . ": " . $value . " <br/> " . "</p>";            
            } 
            <span ><strong>next ( $array ); // 给key赋值后需要移动到下一个,key才会更新</strong></span> 
        } 
    } 

如果我把之前的递归函数改成上面的code,运行结果图如下:

从上面的两种结果图应该可以看出一些什么了吧,亲。

说明:
若把next()函数使用在foreach中的if-else代码段中,则不同层级的顺序是可以记录和遵循的;
但如果把next()函数使用在foreach中的if-else代码段外的话,则顺序就是不区分层级直接递增的。
因此,如果需要针对键值进行处理,则需要格外的注意此处的变化,否则可能会让你像子弹一样飞...哈!


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,