是否有理由使用需要数组的字符串?
我有一个开发人员想要传递一个被删除的字符串,在数据库类方法中将其展开,从两个单独的字符串中提取多个字段/值对。我想不出没有发送字符串数组的理由。
示例:
$s = "value1|value2|value3" ;
$s2 = explode("|", $s);
vs a array
$s3 = array(
"1" => "value1",
"2" => "value2",
);
我知道这个想法是实际传递未知数量的键/值对,但我不认为你爆炸的字符串就是答案。但我可能是错的。
答案 0 :(得分:3)
我想不出不发送字符串数组的原因。
字符串是单个实体。您的同事使用字符串“object”(变量或实体意义上的对象)使其携带信息,这是一种非常小的特定于域的语言形式。
但正如它已经表明的那样,它只是开销而不是必需的。可能那个人只是懒得打字并认为这更酷。实际上更酷的是,只需升级PHP并使用新的数组表示法。它也很短,并且它携带的信息比需要解析器的字符串(这里用分离字符爆炸)更多:
explode("|", "value1|value2|value3");
array("value1", "value2", "value3");
["value1", "value2", "value3"];
如果你想了解你的同事有多严肃:他正在玩。播放是可以的,但是如果他需要进行强力播放以表明他可以将其作为一种风格压缩到共享代码库上,那就拍打他的手指。那太愚蠢了。如果需要数组,请传递一个数组。
这不是说正则表达式。这只是你的同事在代码库中引入问题的一些自我嘲弄。只是因为有可能并不意味着它更好。
我想不出不发送字符串数组的原因。
嗯,我可以想象的一些可能的原因:
请不要太认真地对待这些评论;)你可以问,但没有太多的答案,因为这有点可疑,因为可能有这样的事情有用的原因(尽管我怀疑,因为有些OOP的东西在这里开始变得非常不同了。所以它总是取决于,但尝试保持您编辑的代码编辑简单,不要添加太多魔术。可以将该字符串视为魔术数组。
答案 1 :(得分:0)
我会说100%精确答案的信息不够。在大多数情况下,答案是否定的。但这可能是一些具体案例。
您在何处以及在何处传递数据?
有时您认为数组是(实际上)实际上是一个字符串,例如,如果“底层”层是JSON或XML。并且可能通过内爆/爆炸字符串传递和解析数据的速度更快 - 但同样,对此没有共同的答案,它取决于许多因素,例如数据的数量和结构。你应该尝试测试它。或者提供更具体的信息:)