Zadejte hledaný výraz...

Pomoc s PHP, zjenodušení scriptu?

Zdravím, prosím o pomoc (nakopnutí)
jak zjednoduši tento script kde $a může dostahovat "nekonečna"
$data = array("auto modre", "auto modre drahe", "auto zelene", "auto modre bmw");
for($i=0; $i
$pom = explode(" ", $data);
for($a=0; $a
if($a == 0 && $pole] == null) $pole] = array();
if($a == 1 && $pole]] == null) $pole]] = array();
if($a == 2 && $pole]]] == null) $pole]]] = array();
if($a == 3 && $pole]]]] == null) $pole]]]] = array();
if($a == 4 && $pole]]]]] == null) $pole]]]]] = array();
if($a == 5 && $pole]]]]]] == null) $pole]]]]]] = array();
}
}
Vysledek:
8. 4. 2013 13:30:15
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887978
Petr Pliska
verified
rating uzivatele
8. 4. 2013 13:37:10
Co má tenhle script vlastně dělat ?
8. 4. 2013 13:37:10
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887977
To vypadá na chybný návrh datové struktury. Popište, co to má dělat, třeba vás u toho napadne lepší struktura.
8. 4. 2013 13:55:07
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887976
Jestli jsem to dobre pochopil, tak jde o vytvoreni stromu z retezce, kdy koren je auto.
8. 4. 2013 13:56:00
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887975
Petr Pliska
verified
rating uzivatele
8. 4. 2013 14:14:15
rešením je datova strukturea Trie kde klíče jsou jednotlivá slova. Jen zkouším jak to udělat jednoduše v php
8. 4. 2013 14:14:15
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887974
petr.pliska : přesně tak. tot je zaklad, u jednotlivích uzlů budu mít jeste doplnujici informace. Klíčem nemusí být slovo, klidně i urovne zanoření, ale tak abych to nakonce mohl vykresit. Jen v ukazce je slovo auto prvni, ale může nastat situace ,kdy je vstupen toto:
$data array("auto male","velke auto","velke modre auto","modre auto");
A mě zajímá struktura pro slovo auto.
Pokud to jde i v JS, tak to nemusí byt v PHP :)
8. 4. 2013 14:15:53
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887973
Petr Pliska
verified
rating uzivatele
8. 4. 2013 14:31:47
toto by melo byt reseni
$cars = array("auto modre", "auto modre drahe", "auto zelene", "auto modre bmw");
$result = array();
foreach($cars as $car) {
$result = array_merge_recursive($result, generate_tree(explode(" ",$car)));
}
function generate_tree($key) {
if (count($key) == 0) {
return array();
} else {
return array($key => generate_tree(array_slice($key,1)));
}
}
var_dump($result);
---------- Příspěvek doplněn 08.04.2013 v 14:35 ----------
sorry trochu zjednodusene a s formatem
$cars = array("auto modre", "auto modre drahe", "auto zelene", "auto modre bmw");
$result = array();
// jednotliva auta
foreach($cars as $car) {
$result = array_merge_recursive($result, generate_tree(explode(" ",$car)));
}
// generuje hloubkovou strukturu asociativniho pole
function generate_tree($key) {
if (count($key) == 0) return array(); // konec rekurze
return array($key => generate_tree(array_slice($key,1))); // zanoreni
}
---------- Příspěvek doplněn 08.04.2013 v 14:43 ----------
ano mělo by to byt spravne pokud vas zajima slovo "auto" staci
var_dump($result);
pokud treba "auto modre" tak
var_dump($result);
8. 4. 2013 14:31:47
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887972
crs
verified
rating uzivatele
(1 hodnocení)
16. 6. 2013 09:54:58
16. 6. 2013 09:54:58
https://webtrh.cz/diskuse/pomoc-s-php-zjenoduseni-scriptu#reply887971
Pro odpověď se přihlašte.
Přihlásit