Как перемешать мой список Array или String более читабельным способом? - PullRequest
0 голосов
/ 01 февраля 2011

Представьте, что вы хотите иметь очень читаемый, легко редактируемый список элементов, разделенных только запятыми, а затем вывести 3 случайных элемента из этого списка.Массив или строка не имеют значения.На данный момент у меня работает следующее (спасибо webbiedave!)

$fruits = array('Mango', 'Banana', 'Cucumber', 'Pear', 'Peach', 'Coconut');

$keys = array_rand($fruits, 3);   // get 3 random keys from your array
foreach ($keys as $key) {         // cycle through the keys to get the values
    echo $fruits[$key] . "<br/>";
}

Выходы:

Coconut
Pear
Banana

Единственное, что здесь не решено, это то, что список не так читаем, как я хотел: ЛичноЯ очень предпочитаю, чтобы входной список был без кавычек, например, Mango, а не 'Mango', что означает предпочтительно примерно так:

(Mango, Banana, Cucumber, Pear, Peach, Suthern Melon, Coconut)

Возможно ли это легко?Большое спасибо за ваш вклад.

Ответы [ 3 ]

5 голосов
/ 01 февраля 2011
$input = explode(',', 'Mango, Banana, Cucumber, Pear, Peach, Suthern Melon, Coconut');
$input = array_map('trim', $input);
1 голос
/ 01 февраля 2011

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

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

- Mango
- Banana
- Cucumber
- Pear
- Peach
- Coconut

Это будет лучшим разделением вашего кода и данных.Это также было бы более удобным в долгосрочной перспективе, поскольку вам не нужно прикасаться к реальному коду при добавлении или удалении элементов.

Или, конечно, в вашем случае вы можете просто получить простой текстовый файл содна запись в строке и чтение файла в массив.

Если вы беспокоитесь о производительности, вы можете сериализовать сгенерированный массив на диск или что-то в этом роде.

1 голос
/ 01 февраля 2011

Не без противоречий со стандартами PHP.

Вы можете определить такие константы, как

define(Mango, "Mango");

, и использовать их в своем массиве, но это нарушит соглашения по именованию в PHP, поскольку все константы должны быть в верхнем регистре

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...