Zadanie ze słownikiem

0

Hej wszystkim !
Zacząłem się wkręcać trochę w php i teraz stanąłem na zadaniu poniżej. Jedyne co mi się udało zrobić to wypisywanie ile razy wystąpiła litera. Możecie pomóc?
P.S.
Nie wypisałem tekstu ze zmiennej $dltekst bo za długi i nie chcę zaśmiecać posta.

Napisz program, który na bazie dowolnego tekstu tworzy słownik, który indeksuje słowa po ich długości np.
slownik[3] = array('kot','Ala');
Na bazie tego słownika określ ile jest słów 3 literowych.


$tablica_znakow = str_split($dltekst);
$klucze = array_unique($tablica_znakow);
sort($klucze);
foreach($tablica_znakow as $elem) {
	echo $elem;
}
echo '<br><br>';

foreach($tablica_znakow as $elem) {
	if(!isset($pomoc[$elem])) $pomoc[$elem]=0;
	$pomoc[$elem]++;
}


arsort($pomoc);
echo '<table border=1>';
foreach($pomoc as $key => $elem) {
	echo '<tr><td>'.$key.'</td><td> '.$elem.'</td></tr>';
}
echo '</table>';
// 
1

Zajrzyj do dokumentacji, co w ogóle robi str_split (kliknij na nazwę w swoim kodzie)...
Potrzebujesz explode, potem strlen

0

Ok explode do zmiennej $dltekst. W którym miejscu i do jakich zmiennych strlen? Bo działa tylko ze stringami, a explode tworzy tabelę tak jak str_split. Mam to zrobić implode żeby skonwertowało do stringa?

0
Metatron napisał(a):

Ok explode do zmiennej $dltekst. W którym miejscu i do jakich zmiennych strlen? Bo działa tylko ze stringami, a explode tworzy tabelę tak jak str_split. Mam to zrobić implode żeby skonwertowało do stringa?

Twoje obecne rozwiązanie jest bez sensu lub bardzo skomplikowane i tego sensu po prostu nie dostrzegam.

Masz banalne zadanie - rozbić tekst na wyrazy, każdy wyraz zapisać do tabeli z indeksem odpowiadającym długości tego wyrazu.
Za pomocą explode możesz rozbić tekst po spacjach na tablicę wyrazów. Każdy element tablicy będzie stringiem - oddzielnym wyrazem. Z tego miejsca chyba już jasne po co polecono Ci użyć strlen i jak dalej to rozwiązać :)

0

No właśnie nie :/

0

Nosz kurde, ZERO inicjatywy własnej i próby zrozumienia tematu, a nawet brak zainteresowania, skoro odpisujesz po 3 dniach. Gdzie żeś poszedł do szkoły i na jaki profil/kierunek? Jeżeli cokolwiek związanego z informatyką to zły wybór i zastanów się dobrze czy nie pora to zmienić na coś innego.

$text = "Ala ma kota i zje go z keczupem";
$slowa = explode(' ', $text);
foreach($slowa as $slowo) {
  $baza_slow[strlen($slowo)][]=$slowo;
}
echo "Słów 3 literowych: ".count($baza_slow[3]);

Jakby to napisał ładnie (co by nie generowało NOTICE-ów, które zapewne masz ukryte) to by było 2 linijki więcej, ale generalnie jak widać samo rozwiązanie problemu mieści się w 4 linijkach i korzysta z całych 3 funkcji, explode, strlen oraz count.

0

Dzięki bardzo :) Tak podejrzewałem, że też foreach ale nie wiedziałem jak zaimplementować tą pętlę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1