Ich habe ein DB wie so:rekursive PHP-Funktion für adjacency-Listenanzeige
id text parent
1 Parent 1 0
2 Child of 1 1
3 Sibling 1
4 Another Parent 0
5 A first child 4
Also versuche ich, eine Baumstruktur meiner Auflistung der Eltern zu erfassen. Ich bin mir der anderen Möglichkeit bewusst (verschachtelte Sets, denke ich?), Aber ich bleibe dabei. Ich versuche nun, die Daten aus der DB und in eine verschachtelte Array-Struktur in PHP zu bekommen. Ich habe eine Funktion wie folgt aus:
class Data_Manager
{
public $connection = '';
public $collection = array();
function __construct() {
$this->connection = mysql_connect('localhost', 'root', 'root');
$thisTable = mysql_select_db('data');
// error handling truncated
}
function get_all() {
$arr = &$this->collection;
$this->recurseTree('', 0, $arr);
var_dump($arr);
}
function recurseTree($parent, $level, $arrayNode) {
$result = mysql_query('SELECT * FROM tasks WHERE parent="' . $parent . '";');
while ($row = mysql_fetch_array($result)) {
$row['children'] = array(); //where I'd like to put the kids
$arrayNode[$row['id']]= $row;
$this->recurseTree($row['id'], $level+1, $arrayNode[$row['id']]);
}
}
}
Also, was ich möchte mit kommen irgendeine Art von verschachtelten Baum von assoziativen Arrays ist, aber ich kann nicht herausfinden, ganz wie das zu tun. Nichts scheint in das Array zu schreiben, in das ich gehe, und ich verliere den Überblick über mich selbst in der Rekursion. Kann mir jemand helfen über diesen letzten Buckel, die in so etwas wie führen:
[
Parent1 => [
children => ['Child of 1', 'Sibling']
],
AnotherParent => [
children => ['First Child']
]
]
Und ich bin weniger um die spezifische Form des Ausgangs. Es wird in JSON umgewandelt und ich habe mich noch nicht damit beschäftigt, den clientseitigen Handler zu schreiben, also keine Sorge wegen der genauen Struktur.
Danke!
haben Sie versucht, per Referenz zu übergeben? – stillstanding
tue ich, wenn ich die ursprüngliche Instanzvariable $ collection übergebe; Ich weiß nicht viel darüber, wie das funktioniert, aber sollte ich das alles durch Rekursion verwenden, um immer das "Mutter" -Array zu bearbeiten? –
siehe http://stackoverflow.com/questions/3627878/php-mysql-retrieve-a-single-path-in-the-adjacency-list-model für eine Menge von Referenz –