Случайный массив префиксов имени пользователя
Модифицируя мой чат-сайт, и я хочу добавить случайный ассортимент префиксов, когда люди присоединяются. право не код 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]);