» Vad är en rekursiv funktion?

En rekursiv funktion är en funktion som kallar på sig själv. Ta en titt på exemplet nedan. Den funktionen läser in allt innehåll i en mapp (inklusive eventuella undermappar) genom att kalla på sig själv när en undermapp hittas. Rekursiva funktioner kan även vara användbara i andra situationer.
 
  function getFolderTree($folder)
  {
    $folder .= ( substr($folder, -1) != '/' ) ? '/' : '';
    $handle = opendir($folder);
    $tree = array('folders' => array(), 'files' => array());
    
    while(($item = readdir($handle)) !== false)
    {
      if(( $item != '.' ) && ( $item != '..' ))
      {
        if(is_dir($folder.$item))
          { $tree['folders'][$item] = getFolderTree($folder.$item); }
        else $tree['files'][] = $item;
      }
    }
    
    return array_merge($tree['folders'], $tree['files']);
  }
 
Funktionen används sedan som vilken annan funktion som helst.
 
  $tree = getFolderTree('/sökvägen/till/mappen');
  echo '<pre>', print_r($tree, true);
 
Resulatet från ovanstående skript kan då bli något liknande:
 
  Array
  (
    [anders] => Array
      (
        [divproblem] => Array
          (
            [0] => index.html
          )
      )

    [div] => Array
      (
        [0] => middle.html
        [1] => lavve.html
        [2] => ninjja.html
        [3] => fxvision.html
        [4] => decar.html
        [5] => decar-height.html
        [6] => absolute-middle.html
        [7] => float-left.html
      )

    [table] => Array
      (
        [0] => middle.html
        [1] => middle-ii.html
      )
    
    [0] => disable_textarea.php
    [1] => div-height.html
    [2] => overflow.php
    [3] => overflow_comment.php
    [4] => div-height-2.html
    [5] => div-height-3.html
    [6] => table-over.html
    [7] => sabla-divvar.html
    [8] => sabla-divvar-2.html
    [9] => sabla-divvar-dectgap.html
    [10] => mark-select.html
    [11] => opacity.html
  )
 
Wiki-navigering
Wiki Index
Wiki Artiklar
Wiki Skolan
Wiki Guider
Wiki FAQ
Webbhotell
Domänregistrering
Wiki-sökning
Sök:
Dokumentalternativ
Redigera dokumentet
Visa dokumenthistorien
Senaste wiki-ändringar
Visa ändringarna
Inställningar
Wiki inställningar
Bra att veta
Vad är en Wiki?
Våra förhållningsregler
Trivselregler
Att använda Wikin
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB 2.0.4 © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic