Prvni vec je nazev predavane promenne. $a je nicnerikajici a nema dostatecnou vyukovou hodnotu :-) Doporucuji nazvat $pole nebo tak nejak,... aby bylo jasne co to je uz z nazvu promenne.
Druhou veci kterou bych doporucil je print_r(). Pokud jsem to dobre pochopil, tak cely ten for() cyklus je ve funkci rozdel() napsan jen z debugovacich duvodu, abysme vypsali pole $a. print_r($a) udela uplne to same, je to kratsi.
takze misto toho celeho for cyklu dat
echo "<PRE>"; print_r($a);
Pokud bych uz opravdu musel prochazet pole a neco delat s hodnotami, rozhodne bych radeji pouzil forall($pole AS $key=>$hodnota) {} namisto for()u
Copak je to za funkci "forall()"???
Nic takoveho jsem zatim nevidel, ani v php 5...
to bys asi nikoho moc nenaucil. Funkce for() aspon existuje ;o)
Jinak s pouzitim print_r() nebo foreach() spis nez for() souhlasim. Hlavne proto, ze obe spolehlive vypisou cele pole narozdil od takhle pouziteho foru.
Nevim jake mate zkusenosti s funkci count($pole), ale v pripade, ze $pole obsahuje "prazdne" promenne, tak je count($pole) jaksi nepocita, takze se vam muze krasne stat, ze cele pole nevypisete i kdybyste se na hlavu postavili... (a to ani nemluvim o pouziti next($pole), to je jeste horsi).
for() spolu s count() next() pouzivam naprosto bez problemu. Naucil jsem se to tak uz z knizky Jirky Koska, coz je vlastne vseobecne uznavana jako asi nejlepsi o PHP v cz, ale to sem nepatri :)
Jen nevim proc by to melo byt spatne, protoze print_r pracuje taky tak :) // teda alespon driv
Knihu nemam, ale kvuli koskovym strankam o php jsem mel dost komplikovane zacatky s php... Nechapu proc kosek pouzival mysql_fetch_row() misto aby pouzil mysql_fetch_assoc() ... Odkazovat se na hodnotu prvku pole prez ciselny index je mistifikujici, napsal jsem cely projekt ve stylu echo $row[12] ... Upravovat to je dost sila. I kdyz je pravda ze v knize uz mysql_fetch_assoc() pouziva, ale na webu to nemel... No mozna sem si mel radsi koupit tu knihu :)
TomasDean, junix > souhlas s junixem, forall() je kravina :)
junix > pokud jde o postup s pouzitim for() a count(), je uplne v poradku.
Naopak s funkci print_r by to bylo delsi, protoze bychom museli upravovat vystup. Normalni vystup "print eru" by toti vypadal takhle:
Array ( [0] => Mam [1] => jednu [2] => nohu [3] => k [4] => zemi [5] => koolmou )
Formatovaci kod by byl daleko delsi nez jednoduche for :)
Co se tyce Countu, jsi blizko ale v cili :) Pravda je, ze count nepocita prazdne promenne. Problem je v tom, ze vystup splitu nikdy nemuze byl prazdna promena :) Ano, muze to byl promenna s nulovou delkou, tu uz ale Count pocita :) Napr. pokud bychom tedy zadali text "Mam jednu nohu kolmou", mezi nohou a kolmou je 5 mezer => 4 promenne s nulovou delkou, ty vsak count($a) zapocita (bude mit hodnotu 8) a vystup skriptu bude:
1.slovo: Mam
2.slovo: jednu
3.slovo: nohu
4.slovo:
5.slovo:
6.slovo:
7.slovo:
8.slovo: koolmou
Jasne, uznavam, ze 4. 5. 6. 7. slovo nejsou slova. Ale print_r by to nevyresilo, vystup by byl:
Array ( [0] => Mam [1] => jednu [2] => nohu [3] => [4] => [5] => [6] => [7] => koolmou )
Takze stiznoust na Count() je uplne bezpredmetna :)
Cyklus vypisovani pole sice nema s regularnimi vyrazy a tomu jak funguje Split nic spolecneho, ale povazoval jsem za obcanskou povinost toto uvest na pravou miru :)
K teto prilezitosti pridavam k [^[:alnum]] jeste +, aby nedochazelo ani k tomu, ze by prvky pole meli hodnotu NULL, nez se toho nejakej nuancionista chytne :)
diky junixu :)