没有设置或空字符串 - 如果它最终向用户显示“none”,这会更好吗?

时间:2009-01-02 01:52:06

标签: php

我想知道你是否使用未设置的变量,空字符串(或0)或“无”来确定变量是否为“无”?

我正在考虑的情况是,我正在从数据库中检索某些内容,但发现没有为记录设置该值,通常由没有记录或空值的事实决定。这将向用户显示为“无”或“未设置”。

所以问题是,当将这个值传递给脚本的另一部分(即另一个函数,脚本,模板等等)时,我会这样做:

  • 未设置变量(因此检查它是否在模板中设置)
  • 将变量设置为空字符串或0(并检查模板中的空字符串)
  • 将变量设置为“None”或“Not Set”,只回显变量

您是否经常这样做,为什么要这样做?

(我正在使用PHP,因此变量的类型有点不重要。)

我正在寻找一般答案;我知道它不会永远是真的,但是要遵循一般规则。

6 个答案:

答案 0 :(得分:2)

在可能的情况下,我通常会使用语言中的nil值映射为NULL。

如果将值设置为空字符串,无或未设置,那么您提到的其他选项都有可能导致数据库中出现相同的歧义问题。

如果用户可以更新值,则还存在传播回数据库的风险。

答案 1 :(得分:0)

我认为唯一的选择是我不会做的第三种选择。 “无”或“未设置”实际上看起来像是一个UI描述符,并不适合设置为稍后由代码解释的值。

唯一的例外是如果你有一组已知值。如果它们或多或少是常数。

  • NOT_SET
  • NO
  • YES

NOT_SET可能是默认值。在这种情况下,我仍然不会简单地向用户回应“未设置”。

答案 2 :(得分:0)

通常,我发现最好在整个程序中一致地处理数据结构。这意味着当我将它们传递给程序的其他部分时,保留数据库中未设置的变量。如果某个特定函数期望数据格式不同,我会像我一样转换或检查边界条件。

答案 3 :(得分:0)

正如您所说,“无”或“未设置”值仅与向用户显示相关。对于所有内部使用,该值应为本机NULL值。人类可读取的值只能由将值呈现到输出流中的任何函数替换

答案 4 :(得分:0)

在PHP中,您可以将变量设置为FALSE或NULL,然后说:

if($var === FALSE)
    ...

(注意三个等号)

您应该明确设置值。

答案 5 :(得分:0)

我建议将其设置为NULL。如果你从数据库中获取值,并且它是NULL(SQL),那么获取记录的PHP函数很可能会为该字段返回NULL(PHP)。

您可以将PHP中的字符串与NULL进行比较:

if($myString === NULL) {
    /* It's NULL! */
}

如果您希望显示某个字符串而不是NULL(当转换为字符串时,等于“”),您可以将其设置为:

if($myString === NULL) {
    $myString = 'None';
}

考虑到您可能需要稍后重构您的代码以进行国际化。如果在整个代码中使用用户字符串,那么执行此操作会更加困难。

简单地不设置变量是不好的,因为你可以输入变量名称的拼写错误并想知道为什么当你设置它时“无”仍然显示。