x-kom hosting

PHP - znalezienie indeksu w tablicy

Bruce666
utworzono
utworzono

Witam, 
Mam do zrobienia pewien projekt i jedna rzecz mnie w nim blokuje. 
Problem wygląda następująco:

Są dwie tablice znaków: 
Pierwsza - tekst wprowadzony przez użytkownika i przy użyciu str_split przekształcony w tablicę
Druga - alfabet złożony z małych i dużych liter przekształcony w tablicę przy użyciu str_split. 

 

Fragment kodu wygląda następująco: 

$tekst = $_POST['Caesar'];
	var_dump($tekst);
	$znaki = str_split($tekst);
	var_dump($znaki);
	$alfabet = ('AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuWwVvXxYyZz');
	$alfarray = str_split($alfabet);

Problem polega na tym, żeby znaleźć indeksy znaków w tablicy alfabet, przykładowo: 
$tekst = 'Jan Kowalski'

zmienione na tablicę będzie wyglądać tak: 
[0] 'J' ; [1] 'a'; [2] 'n'; [3] ' '; [4] 'K'; itd...

 

Chodzi o to, by skrypt wykrył, że duża litera 'J' ma w tablicy $alfarray indeks bodajże 18, 'a' ma indeks '1' (pierwszy znak ma indeks 0), itd. 

Próbowałem rozwiązać to przez dwie pętle for i w nich while, ale nie umiem ustawić warunku, który by to weryfikował. 


Cały program to szyfr cezara, a powyższy problem jest barierą, która nie pozwala mi go rozwiązać...

Pomoże ktoś? 

dmonix
komentarz
komentarz (edytowane)

rozsądne wydaje się zrobienie tablicy asocjacyjnej czyli 

$alfArray = [
'A' => 0,
'a' => 1, itd itd
];

a później 

$szyfr = [];
foreach ($tekst as $t) {
	$szyfr[] = $alfArray[$t]; 
}

tylko wiem pisania z palca tej pierwszej tablicy.

albo drugi sposób to robisz foreacha po tej tablicy która ma być zaszyfrowana i dla każdej wartości piszesz funkcje która sprawdza pozycję danej literki 

function getIndex($char, $array) {
	foreach ($array as $index => $value) {
		if ($value == $char) {
			return $index;
		}
	}
	return -1; //brak znaku w tablicy
}

$szyfr = [];
foreach ($text as $t) {
	$szyfr[] = getIndex($t, $alfArray);
}

wszystko pisałem z głowy więc może gdzieś być błąd, podałem pomysły jak możesz to zrobić.

Edytowane przez dmonix

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.