Случайный массив префиксов имени пользователя

Модифицируя мой чат-сайт, и я хочу добавить случайный ассортимент префиксов, когда люди присоединяются. право не код php: define("ANONYMOUS_PREFIX", "user");который выводит как: user9367 присоединился.

Вот что я хочу сделать, но у меня нет надежды с php.

define("ANONYMOUS_PREFIX", "$array"); 
$array = array(Mrs., Mr., Ms., Prof., Dr., Gen., Rep., Sen., St.);

Не говоря уже о том, чтобы сделать это рандомизированным.

4 ответа

Использование array_rand()

$array = array('Mrs.', 'Mr.', 'Ms.', 'Prof.', 'Dr.', 'Gen.', 'Rep.', 'Sen.', 'St');
$prefix = $array[array_rand($array)];
define ("ANONYMOUS_PREFIX", $prefix);
var_dump(ANONYMOUS_PREFIX);

Обратите внимание, что вы можете назначать скалярные значения только константам.

Полагаю, вы скорее пользователь своего программного обеспечения для чата, чем программист. Я предлагаю вам просто заменить определение этой строкой:

define("ANONYMOUS_PREFIX", array_rand(array_flip(array("Dr", "Mr", "Ms", "Prof")))); 

Если вы хотите добавить больше префиксов, всегда пишите их в скобках и добавляйте запятую раньше.

Вы можете использовать mt_rand(), чтобы найти случайный индекс в массиве префиксов, а затем определить этот префикс. Я полагаю, что быстрее найти одно случайное число, чем случайным образом перемешать массив, особенно учитывая тот факт, что этот массив со временем может стать больше.

<?php
$prefixes = array(Mrs., Mr., Ms., Prof., Dr., Gen., Rep., Sen., St.);
mt_srand(microtime());
$randval = mt_rand(0,count($prefixes));
$prefix = $prefixes[$randval];
define("ANONYMOUS_PREFIX", $prefix);

Константа не может хранить массив, вам нужно использовать обычную переменную. Для рандомизации используйте функцию shuffle():

$array = array(Mrs., Mr., Ms., Prof., Dr., Gen., Rep., Sen., St.);
shuffle($array);

// you can assign the first element to the constant if you need to:
define('PREFIX', $array[0]);
Другие вопросы по тегам