首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php:有很好的理由引用所有数组键/索引吗?

php:有很好的理由引用所有数组键/索引吗?
EN

Stack Overflow用户
提问于 2011-04-12 22:08:58
回答 3查看 387关注 0票数 2

我正在运行其他人的代码,他们经常避免转义数组键。

例如:

$row_rsCatalogsItemsName

而不是

$row_rsCatalogsItems‘’Name‘

所以我不断地对我所接触的每一件事都做一些微小的改变,仅仅是为了对付那种懒惰。但现在我想知道这样做是否有多大的好处。我得到的结果是,在默认使用字符串之前,它会检查常量(在php中处理常量时,我讨厌这种行为,因为它们即使没有定义也验证为true ),但我也不确定是否值得费心地更改所有的常量作为数组键的实例。

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-12 22:11:57

有不止一个理由。

代码语言:javascript
复制
error_reporting(E_ALL);

在您的脚本开始时,您将立即看到所有的原因。

撇开乐趣,在实践中你可能会认为,这是我可能会逃脱的事情。你可能是对的。但作为一名开发人员,你必须在什么是可接受的黑客攻击以及什么是口头辱骂的理由上划出界限。对我来说,这种特殊的行为超出了这一界限。

的最直接的原因是它使error_reporting(E_ALL)不可用。良好的开发实践要求报告所有错误,这些通知为您设置了错误代码和更困难的调试会话。

更新:--我没有解决现有情况的实际解决方案的问题,下面是我将在您的位置上所做的工作:

  1. 找到了责任人,并确保他们再也不会以任何必要的方式再次这样做。
  2. 运行一个有问题的脚本,并从日志文件中获得关于未定义常量的所有通知。使用regex搜索和替换的
  3. ,尝试将\[(a-zA-Z_-)\]替换为['$1'] (或类似的东西)。如果替换的数量等于日志文件中的通知数量,则为黄金。否则,试着分而治之,直到您看到正则表达式是failing.
  4. Repeat为止,这是所有其他脚本所需要的。
票数 9
EN

Stack Overflow用户

发布于 2011-04-12 22:13:29

从技术上讲,这样做是不对的。你应该用单引号。如果您修复这些代码,它将使用较少的cpu周期和内存来运行代码。即使在一个文件中有1000个固定的,您会注意到差异吗?可能不会。

如果您修复它,它将是正确的,没有警告或通知,而不是真正的速度或内存使用。

票数 2
EN

Stack Overflow用户

发布于 2011-04-12 22:26:57

我要加上引号。如果没有其他的话,以确保:

  1. 代码可读性不会降低(如果有人认为您使用的是常量而不是字符串值),
  2. 额外的循环不会浪费在每个评估

话虽如此,我知道程序员的时间是宝贵的。因此,您可以选择懒散的编码器,并使用正则表达式,如下所示:

代码语言:javascript
复制
$input = '$row_rsCatalogsItems[Name]';
$str = preg_replace('/(\$[a-zA-Z_]+\[)([a-zA-Z]+)(\])/', '${1}\'${2}\'${3}', $input);
echo $str;

(您可能需要使用该表达式来逐步完成这些更改,以确保您正在更改正确的内容;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5642197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档