Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以更可读的方式洗牌我的数组或字符串列表?_Php_Arrays_String_Random_Shuffle - Fatal编程技术网

Php 如何以更可读的方式洗牌我的数组或字符串列表?

Php 如何以更可读的方式洗牌我的数组或字符串列表?,php,arrays,string,random,shuffle,Php,Arrays,String,Random,Shuffle,想象一下,您希望有一个非常可读、易于编辑的项目列表,仅用逗号分隔,然后从该列表中回送3个随机项目。数组或字符串并不重要。现在,我已经完成了以下工作(谢谢webbiedave!) 这里唯一未解决的问题是,列表的可读性不如我所希望的: 就个人而言,我非常喜欢输入列表不带引号,例如Mango,而不是'Mango',意思最好是这样: (芒果、香蕉、黄瓜、梨、桃、苏打瓜、椰子) 这容易做到吗?非常感谢您的输入。这是违反PHP标准的 您可以定义常量,例如 define(Mango, "Mango"); 并

想象一下,您希望有一个非常可读、易于编辑的项目列表,仅用逗号分隔,然后从该列表中回送3个随机项目。数组或字符串并不重要。现在,我已经完成了以下工作(谢谢webbiedave!)

这里唯一未解决的问题是,列表的可读性不如我所希望的: 就个人而言,我非常喜欢输入列表不带引号,例如
Mango
,而不是
'Mango'
,意思最好是这样:

(芒果、香蕉、黄瓜、梨、桃、苏打瓜、椰子)


这容易做到吗?非常感谢您的输入。

这是违反PHP标准的

您可以定义常量,例如

define(Mango, "Mango");

并在数组中使用它们,但这会破坏,因为常量应该都是大写的

如果您想要一个可编辑的列表,我建议创建一个配置文件并从那里读取列表

$input = explode(',', 'Mango, Banana, Cucumber, Pear, Peach, Suthern Melon, Coconut');
$input = array_map('trim', $input);
例如,您可以使用和。您的列表如下所示:

- Mango
- Banana
- Cucumber
- Pear
- Peach
- Coconut
这将更好地分离代码和数据。从长远来看,它也更易于维护,因为在添加或删除元素时,您不必接触实际的代码

当然,在您的例子中,您可以只使用一个简单的文本文件,每行一个条目,然后将该文件读入一个数组


如果您担心性能,您可以将生成的阵列序列化到磁盘或类似的东西。

如果您谈论的是
阵列(..)
,那么就没有办法改变这一点。在PHP中,字符串必须用引号括起来。其他一切都不会更具可读性或可维护性……在PHP中,没有比您提供的引用字符串数组更“正确”的方法来初始化数组。如果需要不同的语法,请切换到不同的语言。试试Ruby:
水果=%w{芒果香蕉黄瓜梨桃子Suthern\甜瓜椰子}
谢谢你的创意!如果此列表中有1000个项目,而不是数组中有20%的字符,则会有任何性能损失,因为
'Mango'
Mango
多20%?数组定义很可能更快,而且如果项目仍然是硬编码的,则肯定是首选解决方案。如果您懒惰,可以让PHP从字符串中生成数组:
$input = explode(',', 'Mango, Banana, Cucumber, Pear, Peach, Suthern Melon, Coconut');
$input = array_map('trim', $input);
- Mango
- Banana
- Cucumber
- Pear
- Peach
- Coconut