我很好奇人们对重用PHP变量的具体案例的看法。
当爆炸以逗号分隔的字符串时(假设$ names变量本身来自其他地方,以后不用于其他任何东西):
$names = 'Bob,Jim,Carol';
$nameArray = explode($names);
foreach ($nameArray as $name) { // etc. }
对战:
$names = 'Bob,Jim,Carol';
$names = explode($names);
foreach ($names as $name) { // etc. }
第二个版本编写速度更快,而且更不容易出现拼写错误,但你可能会认为第一个版本更具可读性。据推测,PHP必须做一些额外的工作来将字符串变量转换为第二个版本中的数组变量,但它使用的变量更少。
这里的表现可能不是什么大问题。人们对一种方法的偏爱是否强烈?
答案 0 :(得分:1)
从技术上讲,这是完全可以的。
但是我仍然认为这是一种不好的做法,因为这可能会导致其他开发人员(甚至是你自己)在以后查看代码时产生混淆。
我个人倾向于使用较短的名称作为更重要的变量,即在下面的代码行中经常使用的名称。如果数组更重要,我会给字符串命名为namesStr
。
答案 1 :(得分:1)
我会说这是风格问题。在某些地方它可能没问题,有些地方可能没那么。但为什么要停在那里 - 你甚至可以使用不同的代码
<?php
$names = 'Bob,Jim,Carol';
foreach (explode(',', $names) as $name) {
echo $name . PHP_EOL;
}
对于某些人来说,这看起来很糟糕,但有些好处。
答案 2 :(得分:1)
我同时使用它们。在第一个示例中,您可以为第一个变量提供详细名称,而不是在某处应用注释。
如果第一个变量太长而无法放在一行(如果$names = explode(',', 'Bob,Jim,Carol,...,...,...');
变长),我会使用第二个例子。
在你的简单案例中,我写了
foreach(explode(',', array('Bob,Jim,Carol')) as $name) { ..
但这可能不会经常适用,因为您的硬编码值也可能存在于对象的属性,常量或当前范围之外的任何其他来源。
我的一般想法是避免不必要的变量(只使用一次),直到代码看起来很奇怪,这是非常主观的,可能是由于太多的parens或太长的行。