Autor Zpráva
Dlahacz
Profil *
Zdravím, potřeboval bych poradit jak spočítat počet prvků v řetězci. např mam $retezec = "25,12,18,15,562"; (potřebuju spocitat kolik je prvku oddelenych carkou, u tohoto prikladu by byl výsledek 5, dik
juriad
Profil
count(explode(',', $retezec))
jednotlivé funkce si proklikej
vosa
Profil *
já bych to řešil takhle, ale možná je to moc komplikované:
$retezec = "25,12,18,15,562";
$prvky = explode(',',$retezec);
$pocePrvku = count($prvky);
echo $pocetPrvku;  // 5

//nebo krátce:
echo count(explode(',',$retezec)); //5



hmm pomalu píšu - juriad mě předběhl... ještě jedno řešení - spočítá počet oddělovačů asi je to rychlejší:

 substr_count($retezec, ',');
Dlahacz
Profil *
dik
Someone
Profil
vosa:
spočítá počet oddělovačů
počet oddělovačů != počet prvků
Dlahacz
Profil *
Someone:

substr_count($retezec, ',');
$retezec++;

solved
juriad
Profil
Dlahacz:
určitě nechceš iterovat řetězec, to dělá něco úplně jiného, viz http://www.php.net/manual/en/language.operators.increment.php
správně je
substr_count($retezec, ',')+1
peta
Profil
solved? :) A pri poctu prvku nula tito vypise chybne 1.
Joker
Profil
peta:
A pri poctu prvku nula tito vypise chybne 1.
To by šlo vyřešit:
$pocet = empty($retezec) ? 0 : substr_count($retezec, ',') + 1;

Resp. komu by dělal problém podmíněný operátor:
$pocet = 0;
if (!empty($retezec)) $pocet = substr_count($retezec, ',') + 1;
Majkl578
Profil
[#9] Joker: A co když tam bude nula?

Tedy spíše:
$pocet = $retezec === '' ? 0 : substr_count($retezec, ',') + 1;

(Nicméně mám z toho trochu takový pocit, že je to pole zapsané řetězcem někde v databázi, což by bylo samozřejmě špatně.)
juriad
Profil
rejp: a kolik prvků obsahuje řetězec "a,b,,c, ,d,,"

nevíme přesně zadání, proto navrhuji zanechat naše pokusy o vyřesení obecného problému, který stejně elegantně nevyřešíme
pokud Dlahacz bude potřebovat poradit s něčím konkrétním, určitě se ozve

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: