---
title: "TCA rekursiv auslesen"
url: "https://www.typo3.net/d/69641-tca-rekursiv-auslesen"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage","PHP","TCA"]
created: "2007-10-23"
last_reply: "2007-10-23"
replies: 0
solved: false
page: 1
pages: 1
lang: "de"
---

# TCA rekursiv auslesen

Extensions › Entwicklung · 0 Antworten · gestartet 2007-10-23

## Eröffnungsbeitrag

**bagalude** · 2007-10-23 · [Beitrag #1](https://www.typo3.net/d/69641-tca-rekursiv-auslesen/1)

Hi Forum,

ich versuche derzeit für einen Export von Datensätzen die TCA rekursiv auszulesen, genauer die in ihr enthaltenen Datenbankabhängigkeiten, damit sich selbige später wieder importieren lassen. Dafür habe ich folgende Funktion in einer Extension erstellt:

```php
function readTCA($table = 'pages'){
  $out[$table]= $table;
  $DATA = $GLOBALS['TCA'][$table]['columns'];
  if (is_array($DATA)) {
    foreach ($DATA as $key => $value)
      if (isset ($DATA[$key]['config']['foreign_table'])) {
 	$table = $DATA[$key]['config']['foreign_table'];
 	$xout = $this->readTCA($table);
 	$out=array_merge($out,$xout);
      }
    }
  }
  return $out;
}
```

Dies scheint soweit auch auf einer Ebene zu funktionieren, aber sobald ich die if(isset ($DATA[$key]['config']['foreign_table'])) Schleife mir einbaue hängt sich der Server auf (leider ohne Fehlermeldung). Kann mir vielleicht jemand sagen woran es liegt und wie ich das Problem umgehen kann??

Einzig mir bekannt Alternative wäre nämlich nur das Array mit den relevanten TCA einträgen per hand zu erstellen und dann statisch abzuspeichern was nicht nur ein erheblicher aufwand ist, sondern auch äußerst unflexibel...;(

hat sich erledigt. Habe durch $out[$table]= $table; eine Endlosschleife produziert...

So geht´s

```php
function readTCA($table = 'pages', &$out){
  if (!isset($out[$table])) {
  $out[$table]= $table;
  $DATA = $GLOBALS['TCA'][$table]['columns'];
    if (is_array($DATA)) {
      foreach ($DATA as $key => $value){
        if (!$this->exportTest($key)){
 	  $table = $DATA[$key]['config']['foreign_table'];
 	  if (is_array($DATA[$key]['config'])){
	    foreach ($DATA[$key] as $key=>$value){
	      $out[]=$DATA[$key]= $value;
	    }
	  }
 	  $void = $this->readTCA($table, $out);
        }
      }
    }
  }
  return $out;
  }
}
```

---

Quelle: „TCA rekursiv auslesen“, typo3.net, https://www.typo3.net/d/69641-tca-rekursiv-auslesen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
