» PHP Recursive ksort: ksortTree

PHP Recursive functions

Yep, that's a tree alright.In real life I do not consider myself to be a tree-hugger, but as a developer: tree data structures and recursive technology totally get me going ;) Seriously though, they are very powerful ways to solve problems and often lead to elegant & reusable solutions.

In this series I am going to share a couple of functions and ways of approaching recursive problems in PHP.

Working with trees

When working with tree data structures you often need to craft them in different ways. PHP offers a lot of functions to change the shape of arrays, but often they only go 1 level deep. Trees can count an almost infinite number of levels. Hence we need recursive replacements for our beloved array functions.

ksortTree

ksortTree is the tree version of ksort. It will alphabetically reorder a tree based on it's keys.

<?php
/**
 * Recusive alternative to ksort
 * 
 * @author    Kevin van Zonneveld <kevin@vanzonneveld.net>
 * @copyright 2008 Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 * @license   http://www.opensource.org/licenses/bsd-license.php New BSD Licence
 * @version   SVN: Release: $Id: ksortTree.inc.php 89 2008-09-05 20:52:48Z kevin $
 * @link      http://kevin.vanzonneveld.net/
 * 
 * @param array $array
 */
function ksortTree( &$array )
{
    if (!is_array($array)) {
        return true;
    }
    
    ksort($array);
    foreach ($array as $k=>$v) {
        ksortTree($array[$k]);
    }
    return true;
}
?>

Like this article?

   Then Dzone it!
Or use another bookmark button below to show your support &
help me spread the word.


tags: php, programming, recursion, hierarchy, tree data structure, array
category: Programming - PHP - Tree Manipulation
read: 1,226 times

Add comment

(required, shown)(required, not shown)for syntax highlighting

[CODE="Javascript"]
your_code_here();
[/CODE]

Replace "Javascript"
with "php", "text", etc.
code (to make sure you are not a spammer)

 Track replies: rss feed comments feed

Comments

#2. Kevin on 03 November 2008

Member avatar: Kevin@ ZiTAL: You're welcome ;)

#1. ZiTAL on 29 October 2008

Gravatar.com: ZiTALIt's the milk!!! Thanl you very much :)