Ошибка при выполнении задания

Nempak

Новичок
Привет! Понимаю что задача очень проста, но всё же мне нужна подсказка. Суть задачи:
  1. Use the editor to print a random number.
  2. Create a new variable $name and store your name in it.
  3. Then print a random character from your name. Use your knowledge ofstrlen(string), rand(min, max), andsubstr(string, start, length) to do this.
Что я сделал:
PHP:
<html>
    <p>
    <?php
    // Use rand() to print a random number to the screen
    $name = "Maxym";
   // Создал переменную со своим именем.
    ?>
    </p>
    <p>
    <?php
    // Use your knowledge of strlen(), substr(), and rand() to
    // print a random character from your name to the screen.
    $name_len = strlen($name);
     // в переменную $name_len записываю длину имени.
    echo "<br>";
    $rand_len =  rand(0, $name_len);
    //в переменную $rand_len записываю рандомное число от 0 до числа которое получил в $name_len
   echo "<br>";
    echo substr($name, $rand_len, 1);
  // Вывожу символ имени.
    ?>
    </p>
</html>
Всё работает, выводит символ. Но проверка показывает ошибку
Oops, try again. Your printed output from rand() should be an integer.
 

Adelf

Administrator
Команда форума
Для Maxym получается так:
$rand_len = rand(0, 5);

Т.е. $rand_len может быть от 0 до 5. Если 0-ой символ в строке будет 'M', то каким будет символ 5-ый?
 

Adelf

Administrator
Команда форума
Да. Потому что 1ый символ идет под индексом 0, а не 1.
 

Nempak

Новичок
Да. Потому что 1ый символ идет под индексом 0, а не 1.
Добавил код: echo substr($name, $rand_len - 1,1);
Ошибка та же.
Но что я заметил:
Поставил перед выводом символа вывод рандомного числа,
Когда 2 = a,
0 = m
4 = y
А когда 1, то выводит М, подскажите, пожалуйста, почему так?

Добавил в rand вместо 0 поставил 1, теперь при 1 выводит М, но редактор не пропускает
 

AllReady

Новичок
Добавил код: echo substr($name, $rand_len - 1,1);
Наоборот.
M - 0, a - 1, x - 2, y - 3, m - 4
$rand_len может быть равен 0. А ты делаешь так: $rand_len - 1. Т.е. может получится -1;
В имени нет буквы с индексом -1. Тебе нужно наоборот сделать:
PHP:
$name_len = strlen($name) - 1;
    echo "<br>";
    $rand_len =  rand(0, $name_len); // диапазон 0-4, а было 0-5
   echo "<br>";
   echo substr($name, $rand_len, 1);
 

Adelf

Administrator
Команда форума
ващет правильнее:
PHP:
$name_len = strlen($name);
echo "<br>";
$rand_len = rand(0, $name_len - 1); // диапазон 0-4, а было 0-5
$name_len судя по названию должна все-таки содержать длину строки $name.
 
Сверху