Autor | Zpráva | ||
---|---|---|---|
jop Profil * |
#1 · Zasláno: 26. 8. 2008, 10:50:18
Ahoj mam v promenne $pole = "1;2;3;;"; Potreboval bych rozdelit retezec do poli aby to bylo $pole["0"] = "1";
$pole["1"] = "2"; $pole["2"] = "3"; a konec. Kdyz pouzivam explode(), tak se vytvori pole 4,5. Tim padem kdyz pouziji count($pole), tak vypise 5 a ja bych potreboval vypsat pouze ty 3. Proste aby to prazdne pole vynechalo. Predem diky |
||
Joker Profil |
#2 · Zasláno: 26. 8. 2008, 10:55:56
Napadá mě nejdřív nahrazením přes regulární výraz odstranit dva a víc středníků hned za sebou a potom explode.
Půjde to za předpokladu, že prázdné prvky jsou na konci a ne "uvnitř" pole. Pokud by mohly být i uvnitř, musely by se dva a víc středníků těsně za sebou nahradit jedním středníkem a potom odstranit případný středník na konci. Nevýhoda toho je, že se nezachovají "skutečné" původní indexy prvků (když třeba první a druhý budou prázdný, tak první v poli bude až ten, co byl v řetězci třetí). |
||
jop Profil * |
#3 · Zasláno: 26. 8. 2008, 11:16:49
Me jde pouze o spocitani zaznamu, takze zaměněné indexy by mi nevadili. vytvoril jsem takovy pokusny skript, ale pracuje mi nejak chybne. Nevim jak mam odstranit strednik uplne na konci jestli tam je
<?php $pole = "1;;3;;"; $pole_select = str_replace(";;",";", $pole); $pole = explode(";",$pole_select); echo count($pole); ?> ted to ukazuje 3 zaznamy, kdyz dam z count($pole)-1 tak to zase spatne funguje kdyz je plny pocet. Chce to asi nejakou podminku, pokud je na konci strednik, odstran ho, ale netusim jak. Poradil by mi prosim nekdo? |
||
ninja Profil |
#4 · Zasláno: 26. 8. 2008, 11:32:03
jop: proste pokud string konci ";", tak posledni znak umazte. Doporucil bych ale na celou kontrolu, cisteni a rozdeleni do pole pouzit regualrni vyraz.
|
||
jop Profil * |
#5 · Zasláno: 26. 8. 2008, 11:50:23
Ale pomoci jake funkce mam odstranit strednik na konci retezce?
|
||
ninja Profil |
#6 · Zasláno: 26. 8. 2008, 12:31:51
jop: Nejdete si je na strankach manualu PHP Strings. Pokud je nejit nedokazete, asi nema smysl pokouset se neco vytvaret.
|
||
koudi Profil |
#7 · Zasláno: 26. 8. 2008, 13:13:24
$pole = "1;;2;;3;;"; $res = array_filter(explode(";",$pole)); echo count($res); |
||
peta Profil |
#8 · Zasláno: 27. 8. 2008, 08:24:46
print_r($res)
|
||
koudi Profil |
#9 · Zasláno: 27. 8. 2008, 10:03:53
peta
Velice hodnotný příspěvek... |
||
Časová prodleva: 16 let
|
0