Autor | Zpráva | ||
---|---|---|---|
capricorn Profil |
#1 · Zasláno: 20. 9. 2008, 14:21:27
Zdravim, potreboval bych poradit nejlepsi zpusob, jak postupne vymazat hodnoty z retezce. Napsal jsem si na to funkci, ale ta nefunguje spravne.
function zobrazit_k_odstraneni(){ if(!isset($_GET['nazev'])){ return false; } $retezec = explode(";", $_GET['nazev']); $nazvy = array(); $nazev = array(); foreach($retezec as $klic => $hodnota){ if(!in_array($hodnota, $retezec)){ unset($retezec[$klic]); } else { $nazvy[] = $hodnota; } if(count($nazvy) > 0){ $nazev[] = "<a href=\"/?nazev=" . implode(";", $nazvy) ."\">$hodnota</a>"; } else { $nazev[] = "<a href=\"./\">$hodnota</a>"; } } return implode(", ", $nazev); } echo zobrazit_k_odstraneni(); |
||
DJ Miky Profil |
#2 · Zasláno: 20. 9. 2008, 14:26:45
„jak postupne vymazat hodnoty z retezce“
Jaké hodnoty z jakého řetězce? Popiš trochu detailněji, o co ti konkrétně jde. Ze samotného kódu toho moc nevymyslíme. |
||
capricorn Profil |
#3 · Zasláno: 20. 9. 2008, 14:52:02
DJ Miky
Napr. $retezec = "monitor;televize;radio"; Potrebuji, aby vzniklo: 1. odkaz: /?nazev=televize;radio 2. odkaz: /?nazev=monitor;radio 3. odkaz: /?nazev=monitor;televize Kliknu napr. na 1.odkaz(/?nazev=televize;radio) a melo by vzniknout: 1. odkaz: /?nazev=radio 2. odkaz: /?nazev=televize Kliknu napr. na 2.odkaz(/?nazev=televize) a melo by vzniknout: 1. odkaz ./ |
||
capricorn Profil |
#4 · Zasláno: 21. 9. 2008, 12:55:00
Omlouvam se, ze obnovuji tohle vlakno, ale nemuzu s tim hnout. Nepotrebuji, aby za mne nekdo psal tu funkci, ale potrebuji proste jen poradit, jak a co mam udelat.
|
||
BetaCam Profil |
#5 · Zasláno: 21. 9. 2008, 14:25:39 · Upravil/a: BetaCam
capricorn
„Omlouvam se, ze obnovuji tohle vlakno, ale nemuzu s tim hnout. Nepotrebuji, aby za mne nekdo psal tu funkci, ale potrebuji proste jen poradit, jak a co mam udelat.“ Nevím, ale všechny tvé operace s poli mi přijdou nějaké zbytečně složité. Nevim jestli sem uplně přesně pochopil to co chces pokud ne tak ještě jednou upřesni informace co ma ta funkce vyhazovat za jakych okolností atd. function url(){ if (empty($_GET['nazev'])) { return FALSE; } $segment = explode(';', $_GET['nazev']); $linkname = array_shift($segment); $newlink = implode(';', $segment); return '<a href="'.($newlink == '' ? './' : '/?nazev="'.$newlink).'">'.$linkname.'</a>'; } echo url(); |
||
capricorn Profil |
#6 · Zasláno: 21. 9. 2008, 17:25:14
BetaCam
Ja uz to nedokazu lip vysvetlit a proto sem davam asi opet zbytecne slozitou funkci, ktera nazorne ukaze o co mne vlastne jde. function zobrazit_k_odstraneni(){ if(empty($_GET['nazev'])){ return false; } $retezec = explode(";", $_GET['nazev']); $nazvy = array(); foreach($retezec as $klic => $hodnota){ $nazvy[] = $retezec; if(in_array($hodnota, $nazvy[$klic])){ unset($nazvy[$klic][$klic]); } if(count($retezec) != 1){ $nazvy[$klic] = "<a href=\"/?nazev=" . implode(";", $nazvy[$klic]) ."\">$hodnota</a>"; } else { $nazvy[$klic] = "<a href=\"./\">$hodnota</a>"; } } return implode(", ", $nazvy); } echo zobrazit_k_odstraneni(); |
||
BetaCam Profil |
#7 · Zasláno: 22. 9. 2008, 12:15:58 · Upravil/a: BetaCam
capricorn
function zobrazit_k_odstraneni(){ if(empty($_GET['nazev'])){ return FALSE; } $request = $_GET['nazev']; $segments = explode(';', $request); $count = count($segments); if ($count == 1) { return '<a href="./">'.$segments[0].'</a>'; } foreach($segments as $key => $val){ if ($key == $count-1) { $link = str_replace(';'.$val, '', $request); }else{ $link = str_replace($val.';', '', $request); } $out[] = '<a href="/?nazev='.$link.'">'.$val.'</a>'; } return implode(", ", $out); } Má to samozdřejmě i několik mínusů. Konstrukce funkce je řešena trochu přes ruku. Důvodem této konstrukce je rychlost. Dalo by se to přepsat sice jednodušeji, ale s razantním snížením rychlosti. Razantním snížením myslím zvýšení času pro provedení funkce zhruba o polovinu. Nic méně bohužel si furt nejak nedovedu představit kde by se takovéhle funkce mohli v praxi hodit. EDIT: Ještě sem tam udělal změnu, aby se nemusela volat tolikrát funkce implode() Při řetězci a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z je počet volání funkcí : V tvé funkci in_array 26x explode 1x implode 27x count 26x v mé funkci str_replace 26x explode 1x implode 1x count 1x |
||
capricorn Profil |
#8 · Zasláno: 22. 9. 2008, 17:05:01
BetaCam
Takoveho ucitele, ktereho mas ocividne Ty, bych take chtel mit. ;-) V praxi se tato funkce hodi, kdyz vyhledavas vice slov, ktere mas v retezci. Tou funkci odpada, ze budes v inputu vyhledavat a mazat slova rucne. Jinak se mam co ucit a uprimne Ti dekuji za pomoc. |
||
BetaCam Profil |
#9 · Zasláno: 22. 9. 2008, 17:28:53
capricorn
„Takoveho ucitele, ktereho mas ocividne Ty, bych take chtel mit.“ Popravdě učitele na programování sem nikdy v pravém slova smyslu neměl. „Jinak se mam co ucit“ Tak to sme dva. |
||
Časová prodleva: 16 let
|
0