This class converst a flat category array into a structured tree array:
<?php
/**
 * Creates a structured tree out of a flat category list
 */
class CategoryTree {
  /**
   *
   * @var array
   */
  protected $categories = array();
  /**
   *
   * @var array
   */
  protected $tree = array();
  /**
   * Default constructor
   * @param array $categories 
   */
  function __construct(array $categories) {
    $this->categories = $categories;
  }
  /**
   * Process a subtree
   * @param array $categories
   * @param integer $parentId
   * @return array 
   */
  protected function getSubtree(array $categories, $parentId = 0) {
    $tree = array();
    foreach($categories as $category) {
      if($category['suboff'] == $parentId) {
        $tree[$category['id']] = $category;
        $tree[$category['id']]['children'] = $this->getSubtree($categories, $category['id']);
      }
    }
    return $tree;
  }
  /**
   * Get the category tree as structured array
   * @return array 
   */
  public function getTree() {
    if(empty($this->tree)) {
      $this->tree = $this->getSubtree($this->categories, 0);
    }
    return $this->tree;
  }
  /**
   * Get the category tree as string representation
   * @return string
   */
  public function __toString() {
    return "<pre>" . print_r($this->getTree(), true) . "</pre>";
  }
}
// Now, use the class with the givven data:
$categories = array(
  array(
    'id' => 1,
    'category' => 'software',
    'suboff' => 0
  ),
  array(
    'id' => 2,
    'category' => 'programming',
    'suboff' => 1
  ),
  array(
    'id' => 3,
    'category' => 'Testing',
    'suboff' => 1
  ),
  array(
    'id' => 4,
    'category' => 'Designing',
    'suboff' => 1
  ),
  array(
    'id' => 5,
    'category' => 'Hospital',
    'suboff' => 0
  ),
  array(
    'id' => 6,
    'category' => 'Doctor',
    'suboff' => 5
  ),
  array(
    'id' => 7,
    'category' => 'Nurses',
    'suboff' => 5
  ),
  array(
    'id' => 9,
    'category' => 'Teaching',
    'suboff' => 0
  ),
  array(
    'id' => 10,
    'category' => 'php programming',
    'suboff' => 2
  ),
  array(
    'id' => 11,
    'category' => '.net programming',
    'suboff' => 2
  )
);
$myTree = new CategoryTree($categories);
echo $myTree;
?>