我想知道你是否使用未设置的变量,空字符串(或0)或“无”来确定变量是否为“无”?
我正在考虑的情况是,我正在从数据库中检索某些内容,但发现没有为记录设置该值,通常由没有记录或空值的事实决定。这将向用户显示为“无”或“未设置”。
所以问题是,当将这个值传递给脚本的另一部分(即另一个函数,脚本,模板等等)时,我会这样做:
您是否经常这样做,为什么要这样做?
(我正在使用PHP,因此变量的类型有点不重要。)
我正在寻找一般答案;我知道它不会永远是真的,但是要遵循一般规则。
答案 0 :(得分:2)
在可能的情况下,我通常会使用语言中的nil值映射为NULL。
如果将值设置为空字符串,无或未设置,那么您提到的其他选项都有可能导致数据库中出现相同的歧义问题。
如果用户可以更新值,则还存在传播回数据库的风险。
答案 1 :(得分:0)
我认为唯一的选择是我不会做的第三种选择。 “无”或“未设置”实际上看起来像是一个UI描述符,并不适合设置为稍后由代码解释的值。
唯一的例外是如果你有一组已知值。如果它们或多或少是常数。
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';
}
考虑到您可能需要稍后重构您的代码以进行国际化。如果在整个代码中使用用户字符串,那么执行此操作会更加困难。
简单地不设置变量是不好的,因为你可以输入变量名称的拼写错误并想知道为什么当你设置它时“无”仍然显示。