#php
#php
Вопрос:
Что я делаю не так
У меня есть этот скрипт, и я добавил к нему $randnumber = rand(100, 500);
функцию, это должно сгенерировать для меня случайное число от 100 до 500.
$randnumber = rand(100, 500);
function word_limiter( $text, $limit = $randnumber, $chars = '0123456789' )
Проблема в том, что это выдает мне ошибку:
Ошибка синтаксического анализа: неожиданная T_VARIABLE
В то время как, если я использую функцию как:
function word_limiter( $text, $limit = '200', $chars = '0123456789' )
это работает на 100%, я пробовал это так:
function word_limiter( $text, $limit = ''.$randnumber.'', $chars = '0123456789' )
но все равно получаю ошибку?
Комментарии:
1. rand () на самом деле не такой случайный, умножьте 2 rand () на 0,10, и это почти всегда = 10, лучше использовать mt_rand ()
2. в чем разница между rand () и mt_rand()?
3. из документов mt_rand():
Many random number generators of older libcs have dubious or unknown characteristics and are slow. By default, PHP uses the libc random number generator with the rand() function. The mt_rand() function is a drop-in replacement for this. It uses a random number generator with known characteristics using the » Mersenne Twister, which will produce random numbers four times faster than what the average libc rand() provides.
возможно, я преувеличил свой предыдущий комментарий
Ответ №1:
Это синтаксическая ошибка. Вы не можете назначить значение выражения в качестве значения по умолчанию. Значениями по умолчанию могут быть только константы. Вместо этого вы могли бы делать что-то вроде:
function word_limiter ($text, $limit = null, $chars = '0123456789') {
if ($limit === null) {
$limit = rand(100, 500);
}
// ...
}
Ответ №2:
Что вы делаете неправильно, так это пытаетесь использовать переменную в качестве значения параметра по умолчанию. Вы не можете этого сделать.
Ответ №3:
Вы могли бы сделать это следующим образом:
function word_limiter( $text, $limit = null, $chars = '0123456789' ){
if (is_null($limit)){
$limit = rand(100, 500);
}
}
Ответ №4:
Вы не можете использовать переменную в качестве аргумента по умолчанию — это должно быть постоянное значение.
Вы могли бы попробовать это…
function word_limiter($text, $limit = NULL) {
if ($limit === NULL) {
// Make its default value.
}
}