Autor Zpráva
jop
Profil *
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
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 *
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
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 *
Ale pomoci jake funkce mam odstranit strednik na konci retezce?
ninja
Profil
jop: Nejdete si je na strankach manualu PHP Strings. Pokud je nejit nedokazete, asi nema smysl pokouset se neco vytvaret.
koudi
Profil
$pole = "1;;2;;3;;";
$res = array_filter(explode(";",$pole));
echo count($res);
peta
Profil
print_r($res)
koudi
Profil
peta
Velice hodnotný příspěvek...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: