想象一下,您希望拥有一个非常易读且易于编辑的项目列表,仅以逗号分隔,然后从该列表中回显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)
这很容易吗?非常感谢您的投入。
答案 0 :(得分:5)
$input = explode(',', 'Mango, Banana, Cucumber, Pear, Peach, Suthern Melon, Coconut');
$input = array_map('trim', $input);
答案 1 :(得分:1)
并非没有违反PHP标准。
您可以定义常量,例如
define(Mango, "Mango");
并在你的数组中使用它们,但这会打败naming conventions of PHP,因为常量应该都是大写的
答案 2 :(得分:1)
如果您想要一个可编辑的列表,我建议您创建一个配置文件并从那里读取列表。
例如,您可以使用YAML和symfony YAML parser。你的清单看起来像这样:
- Mango
- Banana
- Cucumber
- Pear
- Peach
- Coconut
这将更好地分离您的代码和数据。从长远来看,它也更易于维护,因为在添加或删除元素时不必触及实际代码。
当然,或者在你的情况下,你可以只有一个简单的文本文件,每行一个条目并将文件读入一个数组。
如果您担心性能,可以将生成的数组序列化为磁盘或类似的东西。