在修改字符串(PHP)时重用变量名


Reusing variable names when modifying a string (PHP)

当您像下面的例子一样操作字符串时,重用变量名是不好的形式吗?

    <?php
    $string = "Jimmy <b>likes</b> red shoes";
    $string = strip_tags($string);
    $string = str_replace("red", "blue", $string);
    $string = strtoupper($string);
    echo $string;
    ?>

如果这是一个禁忌,什么是首选?应该把它变成一行代码吗?还是使用4个不同的变量名?

我试着搜索,但我能找到的唯一参考是关于将变量从数组更改为字符串或类似的东西。

只要以后不再需要原始的$string值就没有问题。一旦您执行了$string = something($string),原始值将被销毁并替换为修改后的版本。

理论上,您可以简单地将整个序列链接在一起

echo strtoupper(str_replace('red', 'blue', strip_tags('Jimmy likes...')));

变量名应该是对存储在其中的数据的简短、准确的描述。因此,重用变量名是可以的,甚至在没有更好的名称时更可取。另一方面,不应该在错误的优化尝试中重用变量:

for ($i=0; $i < n; ++$i) {
    ...
}
for ($map as $i => $value) {
    ...
}

第二个循环中的索引(存储在$i中的值)最好是整数,而不是重用$i来存储字符串,因为$i几乎是整数索引的通用代码。如果有人坚持要清理空间,他们可以使用unset

变量的真正危险是在大范围内使用它们(全局变量和大型函数),其中名称空间冲突可能导致数据被覆盖。除了防止冲突之外,小函数还可以帮助减少内存使用,因为局部变量的生存时间更短。