Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Losowanie 'randomowego znaku z ciągu nazwy
Forum PHP.pl > Forum > Przedszkole
7ohn
Witam, mam problem z pewnym prostym skryptem, lecz ja coś mi nie wychodzi.
Skrypt polega na losowaniu znaku z ciągu nazwy.
Tu jest fragment kodu

  1. <?php
  2. // Use rand() to print a random number to the screen
  3. ?>
  4. </p>
  5. <p>
  6. <?php
  7.  
  8.  
  9. $name = "Johnny";
  10.  
  11. // Use your knowledge of strlen(), substr(), and rand() to
  12. print ("Długość znaków ". strlen($name)."<br>");
  13. print ("Wyodrębnienie poszczególnych ciągów ". substr($name, 0, strlen($name)))."<br>";
  14.  
  15.  
  16. // questionmark.gifquestionmark.gif
  17. print ("Losowanie randomowego znaku z nazwy ". ));
  18. //??
  19. // print a random character from your name to the screen.
  20.  
  21. ?>


Zadanie to pochodzi z platformy e-learningowej codecademy.com

Sugerują mi użyć do tego substr, strlen. Próbowałem kilka sposobów, lecz wywala mi cały czas błąd.

Proszę o pomoc, i wyjaśnienie tego rozwiązania.
Pozdrawiam
Pyton_000
musisz losować znak z przedziało 0, length()-1 a potem substr od tego znaku w ilości 1
7ohn
dobra mam takie coś
  1. print ("Losowanie randomowego znaku z nazwy ". rand(0,strlen($name) - 1)."<br>")

Zwraca mi indeks znaku, natomiast dalej nie wiem jak zapisać ze
.
mar1aczi
Zajrzyj do opisu tej funkcji: http://www.php.net/substr
Crozin
Taka dodatkowa wskazówka: najprawdopodobniej pracujesz w kodowaniu UTF-8, a przynajmniej powinieneś dlatego musisz korzystać z funkcji mb_*(), tj. mb_substr, mb_strlen.
7ohn
ok, stworzyłem taki oto kod
  1. print ("Losowanie randomowego indeksu znaku z nazwy ". rand(0,strlen($name) - 1))."<br>";
  2.  
  3. $length = rand(0,strlen($name) - 1);
  4. print ("Losowany znak z nazwy to: ".substr($name,$length ,1));


Teoretycznie wszystko działa, lecz nadal wywala błąd.

Ten pseudo interpreter wyświetla komunikat: The random output you printed from your name should be just one character.
mar1aczi
Popatrz na pierwszą i trzecia linie swojego kodu - pewna cześć się powtarza. To co zobaczysz jako wynik z pierwszej linii będzie inne niż to z trzeciej linii.,
7ohn
rzeczywiście trochę pomieszałem


  1. $length = rand(0,strlen($name) - 1);
  2. print ("Losowany znak z nazwy to: ".substr($name,$length ,1));


Jednak dalej pokazuje komunikat, że powininen być jeden character.
Pyton_000
echo substr($name,$length ,1);

Pokaż całą treść zadania. Bo tam powinieneś mieć napisane jaki output ma być.
nospor
A co sie dziwisz?? Procz jednego znaku, jak ci kazano, wyswietlasz jeszcze to:
Losowany znak z nazwy to:
to logiczne ze ci zadania nie zaliczaja
7ohn
Rzeczywiście usunąłem "Losowany znak z nazwy to: " i zaakceptowano.
Dzięki wszystkim za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.