为什么用这种方式声明一个数组

时间:2011-10-03 04:36:57

标签: php arrays

我正在查看其他人编写的代码,并且它以这种方式声明了一个数组(我认为它仍然是一个字符串,有人可以确认)。

$array = "Label 1" . "~/" . "Label 2" . "~/" . "Label 3" . "~/" . "Label4";

然后在代码中,它会执行此操作

split('~/', $array);

为什么有人会这样做是否有正当理由?我通常会从一开始就将它声明为一个数组。

5 个答案:

答案 0 :(得分:6)

绝对没有可靠的理由以这种方式做事而不仅仅是

$array = Array("Label 1", ... , "Label 4");

实际上这是一种非常糟糕的方法,除非你能保证字符串"~/"永远不会出现在数组的元素中。

答案 1 :(得分:3)

我能想到有人这样做的唯一原因是他们想要稍后将$array保存到文本文件中,例如将一些应用程序设置保存到php文件中。但是他们仍然会更好地以通常的方式定义数组,然后使用内爆,正如其他人已经提到的那样,这仍然不是最好的想法并且存在问题。

答案 2 :(得分:3)

在变量$ array中,它仍然是一个字符串,就像这样:

$array = "Label 1~/Label 2~/Label 3~/Label4";

但是在做了类似

的事情之后
$realArray = split("~/",$array);

它将成为一个数组。

如果有人知道如何创建一个这样的数组,我猜他/她想保存这个字符串以供以后使用。但更好的方法是

$array = array("Label 1","Label 2","Label 3","Label 4");
$string = implode("~/",$array);

所以,只要忘记它并使用正常方式。

答案 3 :(得分:2)

在不知道背景的情况下,我无法确定,但是如你所发表的那样这样做没有明显的好处。

效率低,因为它使用了多个额外步骤(变量赋值,字符串迭代和数组填充)。

最有效的方法是:

$array = array( "Label 1", "Label 2", "Label 3", "Label 4" );

这会有相同的结果。

答案 4 :(得分:2)

这是一种可怕的方式。

  • 代码的作用并不是很明显,而是array()定义会立即被识别出来。
  • split()已被弃用。
  • 你需要记住“〜/”是 magic
  • 字符串连接在代码 style 中的可读性,阻碍了可读性。

真的,你应放弃它并使用array('Label 1', ...)