是否有使用空字符串而不是my $source_files = shift;
的情况?我正在寻找您想要使用空字符串而不是使用my $source_files = (@_);
我在HTTP堆栈方面正在思考这个问题,例如在php中,带有看起来像https://example.com/something?key=的查询字符串的请求将被解释为空字符串。
null
string(0)“”
对于我有限的想象力可以设想的每个用例,这应该总是转换为null
,那么为什么有人需要将var_dump($_GET['key']);
存储在数据库字段或类似的东西中?
答案 0 :(得分:2)
NULL
的概念用于表示未知的值。这在数据库上下文中更容易掌握,其中整个行一次插入数据库中。其值未知的字段使用NULL
初始化。
支持该概念的编程语言通常使用NULL
作为未初始化变量的值。这种用法将NULL
的一般看法转变为“未设置”的概念。事实上,在此上下文中NULL
的语义也是“unknown”。
空字符串(''
)是另一回事。它表示字符串中没有任何字符。这并不意味着(字符串类型)的值是未知的;众所周知:它是空的。使用它而不是NULL
是一个逻辑错误。
在HTTP GET
请求的上下文中,由PHP脚本处理的URL为https://example.com/something?key=
,$_GET['key']
为''
(空字符串)。该值已知,key
变量存在于URL中,其值为空字符串。但$_GET['foo']
被PHP正确评估为NULL
。这个价值根本不知道。它不是空字符串;它可以是任何值,但由于它没有在URL中发送,我们无法知道它。
答案 1 :(得分:0)
就数据库而言,空字符串和NULL值是两个不同的东西。您可以区分它们并相互查询。作为一种弱类型的语言,PHP往往会模糊这条线,但这并不意味着软件生态系统中无处不在。
另一方面,php的一个主要用途是处理http表单值,它们本质上都是字符串类型。也许这也没有帮助。