Почему не точно выполняется условие?

206
31 декабря 2021, 22:20

Обычный код для заполнения строки он должен заполнять строку 7 символами (рандомными) но иногда бывает такое что выдает и 3 и 2 символа в место 7 в чем причина ?

<?php
$byk = "qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM1234567890{}[].,:;?";
for($i=0;$i<7;$i++){
    $rand = rand(1,73);
    $ban=$byk[$rand];
        $itog.=$ban;
}
echo $itog;
Answer 1

Потому что длина строки в переменной $byk меньше на две единицы, чем максимально генерируемое число в rand(1,73), и если рандомно выпадает несуществующий индекс (72 или 73), то в результирующую переменную не добавляется ничего. Что бы избежать этого, нужно делать замер длины строки, и это значение брать за максимум для рандомного генератора:

$str = "qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM1234567890{}[].,:;?";
$max = strlen($str) - 1;
$result = '';
for ($i = 0; ++$i <= 7;) {
    $rand = rand(0, $max);
    $result .= $str[$rand];
}
echo $result;
READ ALSO
Как сделать необязательный параметр в Action Yii 2

Как сделать необязательный параметр в Action Yii 2

Помогите пожалуйста, нужно реализовать выполнение экшена с возможность не заполнения параметра ($url) чтобы был доступен такой адрес, site/news/,...

174
Часовой пояс php перевод времени

Часовой пояс php перевод времени

На сайте вывожу время публикации 16:12, как определить часовой пояс пользователя, который зашел и время конвертировать под его, например зашел...

60
Получить значения полей с класа, который екстендится, в базовом

Получить значения полей с класа, который екстендится, в базовом

У меня есть базовый класс BaseCommand примерно такого вида:

159
Кодировка текста из переменной

Кодировка текста из переменной

Пытаюсь вывести в html кнопки с текстом вот таким php-скриптом:

216