Ako vytvorit strom z pola – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ako vytvorit strom z pola – PHP – Fórum – Programujte.comAko vytvorit strom z pola – PHP – Fórum – Programujte.com

 

Takeshi
~ Anonymní uživatel
8 příspěvků
26. 3. 2018   #1
-
0
-

Ahojte,

mam pole napriklad

 stĺpce : id,t_id (úroveň), p_id (odkazuje na id rodiča), meno_položky

 

$arr = array();

$arr[0] = array(4,1,0,"a");

$arr[1] = array(6,2,4,"a a");

$arr[2] = array(7,1,0,"b");

$arr[3] = array(8,3,6,"a a a");

a potreboval by  som vykreslit strom .... teda takto

a

a a

a a a

b b

... s tým, že hĺbka, teda počet detí môže byť neobmedzená a bude sa vkladať do poľa nezotriedene, preto potrebujem funciu, ktorá by to vyriešila ... skúšam kadečo, ale nič nefunguje tak ako má ... asi by to chcelo rekurzívnu funkciu, ale v tom som neni doma ... pomozete mi? Dakujem moc moc

Nahlásit jako SPAM
IP: 78.141.109.–
gna
~ Anonymní uživatel
1206 příspěvků
26. 3. 2018   #2
-
0
-

Takže to chceš seřadit podle toho stringu? usort řadí podle zadané porovnávací funkce.

usort($arr, function($a, $b) {
	return strcmp($a[3], $b[3]);
});
Nahlásit jako SPAM
IP: 213.211.51.–
Kit+14
Guru
26. 3. 2018   #3
-
0
-

#1 Takeshi
Moc nechápu zadání a také nechápu, proč si ten strom nesestavíš rovnou podle svých potřeb, třeba v DOM, ze kterého můžeš rovnou generovat třeba HTML.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Takeshi
~ Anonymní uživatel
8 příspěvků
26. 3. 2018   #4
-
0
-

#3 Kit
Ahoj,

takže k tvojej odpovedi :

1. Zadanie :

 - sú tri stĺpce čísiel v poli > 1. id 2. uroven : t_id 3. p_id - parrent id

- child ma uroven o 1 vyssiu ako jeho parrent ....... p_id dietata je rovnaké ako id rodica

- napr.: 


$arr[0] = array(4,1,0,"a");

$arr[1] = array(6,2,4,"a a");

2. Pole sa zostavuje z databázy, do ktorej sa údaje doplnaju nahodne a teda nie su hned zotriedené

Nahlásit jako SPAM
IP: 195.160.182.–
Takeshi
~ Anonymní uživatel
8 příspěvků
26. 3. 2018   #5
-
0
-

#3 Kit
Ahoj, nie podla stringu, ale aj tak ti dakujem za odpoved! Presnejsie som to vysvetlil v jednom z komentarov

Nahlásit jako SPAM
IP: 195.160.182.–
gna
~ Anonymní uživatel
1206 příspěvků
26. 3. 2018   #6
-
+1
-
Zajímavé
Kit +

   

$nodes = [];
$root = $nodes[0] = new Node();
foreach ($arr as $a) {
	list($id, $level, $pid, $data) = $a;
	if (!isset($nodes[$id])) $nodes[$id] = new Node();
	if (!isset($nodes[$pid])) $nodes[$pid] = new Node();

	$node = $nodes[$id];
	$node->data = $data;

	$parent = $nodes[$pid];
	$parent->children[] = $node;
}

function rdump($nodes) {
	foreach ($nodes as $node) {
		echo $node->data . "\n";
		rdump($node->children);
	}
}

rdump($root->children);
Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1206 příspěvků
26. 3. 2018   #7
-
0
-

   

class Node
{
	public $data = '';
	public $children = [];
}
Nahlásit jako SPAM
IP: 213.211.51.–
Takeshi
~ Anonymní uživatel
8 příspěvků
27. 3. 2018   #8
-
0
-

#7 gna
Ďakujem ! Super riešenie

Nahlásit jako SPAM
IP: 78.141.109.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

Ako ulozit strom — založil Clovecina

Ako vložiť text do poľa — založil hladampomoc

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý