我正在查看其他人编写的代码,并且它以这种方式声明了一个数组(我认为它仍然是一个字符串,有人可以确认)。
$array = "Label 1" . "~/" . "Label 2" . "~/" . "Label 3" . "~/" . "Label4";
然后在代码中,它会执行此操作
split('~/', $array);
为什么有人会这样做是否有正当理由?我通常会从一开始就将它声明为一个数组。
答案 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()
已被弃用。真的,你应放弃它并使用array('Label 1', ...)
。