Hallo ralf,
Nein, kein Array, sondern rein als String
Das hier sollte sein übriges tun:
function nestedset2string ($list, $indent = 0) {
$dst = '';
$indent_what = ' ';
$lend = "\n";
for ($k = 0; $k < count ($list); $k++) {
$entry = $list[$k];
$children_array = array_splice ($list, $k+1, $entry['children']);
$entry['children_string'] = nestedset2string ($children_array, $indent + 2);
$entry_string = str_repeat ($indent_what, $indent);
$entry_string .= '[''.$entry['payload'].''';
if ($entry['children'] > 0) {
$entry_string .= ",$lend";
$entry_string .= str_repeat ($indent_what, $indent + 1);
$entry_string .= "[$lend";
$entry_string .= $entry['children_string'];
$entry_string .= str_repeat ($indent_what, $indent + 1);
$entry_string .= "]$lend";
$entry_string .= str_repeat ($indent_what, $indent);
}
$entry_string .= ']';
if ($k < count ($list) - 1) {
$entry_string .= ',';
}
$entry_string .= $lend;
$dst .= $entry_string;
}
return $dst;
}
$indent_what ist womit eingerückt wird (standardmäßig drei Leerzeichen) und $lend ist das Zeilenende-Zeichen.
Die Daten müssen aus der Datenbank in dieser Form kommen:
$daten = array (
array ('payload' => 'A', 'children' => '12', 'level' => '1'),
array ('payload' => 'B', 'children' => '3', 'level' => '2'),
array ('payload' => 'C', 'children' => '0', 'level' => '3'),
array ('payload' => 'D', 'children' => '1', 'level' => '3'),
array ('payload' => 'E', 'children' => '0', 'level' => '4'),
[...]
);
(also so, wie sie beim SELECT in der URL, die ich gepostet habe, rauskommen)
Viele Grüße,
Christian