PHP: $mchislo = 5;//моя цифра echo generate_password($mchislo); function generate_password($number = 0) { if ($number === 0) { echo "Вы не указали значение"; return false; } $index = 0; $arr = array('1','2','3','4','5','6','7','8','9','0','11','12'); if ($arr[$index] == $number) return $arr[$index]; $pass = ""; while($arr[$index] != $number) { $index = rand(0, count($arr) - 1); $pass .= " ".$arr[$index]; return $pass; } Ребят подскажите, мой код выводить рандомно цифры из массива пока не выпадет мое число, но я не могу понять как сделать, что бы генерировалось не одно число а 6 , к примеру сейчас у меня вывод 8 4 2 8 0 2 9 7 4 3 1 3 6 12 2 12 4 5, а мне нужно задать $mchislo = 555555; и что бы выводилось 122343 433533 555555 и совпадение передать переменной
@Владимир11 Задача какая, сгенерировать пароль состоящий только из цифр, длинной 18 символов? точнее длинной которой укажет пользователь? Просто объясни что ты хочешь в конечном итоге =)
мне нужно делать цикл по этому условию $arr[$index]!=$number, оно у мненя работает но я не знаю как указать длину вывода сейчас работает с 1 цифрой а мне нужно что бы длина была 6 цифр --- Добавлено --- нет не 18 а 6 это пример рандомного цикла пока не выпала 5 ка
И каков шанс совпадения 6 цифр подряд? То есть когда они должны совпасть, даже их твоего массива PHP: $arr = array('1','2','3','4','5','6','7','8','9','0','11','12'); в математике не очень?)
подскажи может нужно как то формировать из этого массива $arr=array('1','2','3','4','5','6','7','8','9','0','11','12'); такой $arr=array('123456','223456','323456','423456','523456','623456','723456','823456','923456','023456','1123456','1223456'............'121212121212'); и из него делать цикл на совпадение? --- Добавлено --- можно и без шанса
Убери программирование, просто подумай, у тебя есть набор цифр, 1 цифра совпадет быстро, две подряд не очень быстро, а шесть когда?) Я тебя еще раз спрашиваю, в чем смысл, что ты хочешь в конечном итоге, в чем твоя задумка? Я спрашиваю потому что то что ты хочешь возможно делается совсем по другому, без массивов.
Пиши, мы тут подождем. Пользователь ввел шесть цифр, что на выходе ему нужно? Я не думаю что на выходе ему нужно бесконечное число.
Тогда смотри, Твой массив должен формироваться после того как человек задал 6 цифр, и в этом массиве обязательно должен быть набор его цифр. Чтобы когда нибудь совпали. Длинна массива тоже должна быть по факту фиксированной. Сейчас напишу пример. Тогда в этом будет хоть какой то смысл
PHP: $mchislo = 5;//число которое введет юзер echo generate_password($mchislo); function generate_password($number = 0) { if ($number === 0) { echo "Вы не указали значение"; return false; } $index = 0; $arr = array('1','2','3','4','5','6','7','8','9','0','11','12'); if ($arr[$index] == $number) return $arr[$index]; $pass = ""; while($arr[$index] != $number) { $index = rand(0, count($arr) - 1); $pass .= " ".$arr[$index]; return $pass; } Ну так у меня и так есть число которое введет юзер я не знаю как их по 6штук выводить --- Добавлено --- а такое подскажешь как сделать $arr=array('1','2','3','4','5','6','7','8','9','0','11','12'); такой $arr=array('123456','223456','323456','423456','523456','623456','723456','823456','923456','023456','1123456','1223456'............'121212121212'); ?
PHP: $mchislo = rand(1, 999999);// эмулируем ввод пользователя echo "Число пользователя {$mchislo} <br>"; echo generate_password( $mchislo ); function generate_password( $number = 0 ) { if ($number === 0) { echo "Вы не указали значение"; return false; } $result = []; $strlen = strlen( $number ); //сколько символов ввел пользователь $count = rand(10, 20); // длинна массива $array = []; $array[] = $number; for ($i = 0; $i <= $count; $i++) { $array[] = rand( 1 . str_repeat("0", $strlen - 1), str_repeat("9", $strlen) ); //случайный набор чисел, как у пользователя } shuffle($array); //перемешаем массив $result = r( $array, $number, [] ); return implode(" ", $result); } function r( $array, $number, $result ) { $rand = rand(0, count( $array ) - 1); $result[] = $array[ $rand ]; if($array[ $rand ] !== $number) { $result = r( $array, $number, $result ); } return $result; } --- Добавлено --- Все что я написал вы должны были продумать в голове, или на бумаге. Как минимум продумать сколько может быть в массиве ключей, и что там должно быть обязательно то число которое ввел пользователь.
Научитесь продумывать свою идею до конца, на бумаге. За вас вечно писать не будут, если только у вас есть деньги
Лучше так написать, без второй функции PHP: $mchislo = rand(1, 999999); echo "Число пользователя {$mchislo} <br>"; echo generate_password( $mchislo ); function generate_password( $number = 0 ) { if ($number === 0) { return "Вы не указали значение"; } $result = []; $strlen = strlen( $number ); $array = []; $array[] = $number; for ($i = 0; $i <= rand(10, 20); $i++) { $array[] = rand( 1 . str_repeat("0", $strlen - 1), str_repeat("9", $strlen) ); } $rand = rand(0, count( $array ) - 1); while ($array[ $rand ] !== $number) { $result[] = $array[ $rand ]; $rand = rand(0, count( $array ) - 1); } $result[] = $array[ $rand ]; return implode(" ", $result); }