Autor Zpráva
pepazDepicka
Profil *
Dobrý den,

prosim Vás, mám např pole o těchto slovek:
tricko, mokre tricko, zelene tricko, nova tricka, krasna tricka
a nyní potřebuji vypsat prvky pole jakožto jednotlivá slova a jejich celkový počet v daném poli.. tedy něco takového:
tricko - v poli je 3x
mokre - v poli je 1x
zelene - v poli je 1x
nova - v poli je 1x
tricka - v poli je 2x
krasna - v poli je 3x


Trápím se nad tím už asi hodinku, ale stále se mi nedaří najít správné řešení tak se obracím s prosbou na Vás.

Děkuji za každou radu / pomoc.

Pepa
Taps
Profil
pepazDepicka:
udaje jsou uloženy v nějaké databazi či nikoliv?
pepazDepicka
Profil *
Taps:
Údaje nejsou uloženy v databázi ani v zádném externím souboru.
Konkrétně jsou jen v proměnné jako string:
$data = "tricko, mokre tricko, zelene tricko, nova tricka, krasna tricka";

Ale z tohoto vytvořit pole není problém a mám takové tušení, že se s polem bude lépe pracovat.
pepazDepicka
Profil *
tak jsem na to preci jen prisel:
$string = "tricko, mokre tricko, zelene tricko, nova tricka, krasna tricka";
$string = str_Replace(", ", " ", "".$string."");
$string = str_Replace(",", " ", "".$string."");
$array = explode(" ", $string);
print_r(array_count_values($array));
pepazDepicka
Profil *
jeste mala uprava s vypsanim klicu i hodnot pole kdyby to nekdy nekdo potreboval.

poprosil bych o kontrolu tohoto kodu (je to schvalne rozepsano na vice radku aby to bylo citelnejsi... Co byste navrhovali zmenit, co by slo udelat lepe aby to fungovalo rychleji?
	$string = "tricko, mokre tricko, zelene tricko, nova tricka, krasna tricka";
	$string = str_Replace(", ", " ", "".$string."");
	$string = str_Replace(",", " ", "".$string."");
	$array = explode(" ", $string);
	$array = array_count_values($array);
	$arr_keys = array_keys($array);
	$arr_values = array_values($array);
	$arr_size = count($arr_keys);
	for ($i = 0; $i < $arr_size; $i++)
	{
	  echo $arr_keys[$i];
	  echo " - ";
	  echo $arr_values[$i];
	  echo "<br />";
	}
	
Alphard
Profil
Ke stylu:
- obalovat řetězec "". a ."" je blbost
- k rozdělení by šla použít funkce preg_split()
- ten výpis by zvládl foreach

<?php
$string = "tricko, mokre tricko, zelene tricko, nova tricka, krasna tricka";

$array = preg_split('~\\s*[, ]\\s*~', $string);
$array = array_count_values($array);

foreach ($array as $arr_keys => $arr_values)
{
  echo $arr_keys;
  echo " - ";
  echo $arr_values;
  echo "<br />";
}
tiso
Profil
Alphard: $arr_keys, $arr_values ???
pepazDepicka
Profil *
Alphard:
Děkuji za úspornější řešení.

Jinak
".$string."

používám proto, že mi tuto syntaxi vyznačuje notepad++, takže se v kódu lépe orientuji... (jinak mi to ta potvora vykreslí šedě a to se tváří jako komentář)
Alphard
Profil
[#7] tiso
Odmazal jsem závorky a tohle neřešil. Pojmenoval bych to asi $k => $v, jak bývá u 4řádkového bloku zvykem.

[#8] pepazDepicka
Tohle působí nehezky. Zkuste to přenastvit/zvyknout si/změnit editor :-) Ale přizpůsobovat kód špatnému editoru není dobré řešení.

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: