我想知道如果我们将一个空字符串作为数组键保存就好了,就像这样
$test = array (
'' => 'Select',
1 => 'Internal',
2 => 'External'
);
Run Code Online (Sandbox Code Playgroud)
任何建议,将不胜感激.
数组键应该是整数或字符串。
处理空字符串作为数组键远非理想的做法。
也空将转换为空字符串,即键无效实际上将存储的“下”。
但是这种方法会使您的数组变得模棱两可且不稳定。
考虑以下示例:
$test = array (
'' => 'Select',
1 => 'Internal',
2 => 'External',
'' => 'select'
);
var_dump(array_key_exists('', $test)); // output 'bool(true)', not so bad - but only at first glance
Run Code Online (Sandbox Code Playgroud)
下一个案例变得模棱两可:
var_dump($test[""]); // output "select"
Run Code Online (Sandbox Code Playgroud)
最后一个例子出现错误(注意):
var_dump((object) $test);
// output: object(stdClass)#1 (3) { E_NOTICE : type 8 -- Illegal member variable name -- at line 12 [""]=> string(6) "select" [1]=> string(8) "Internal" [2]=> string(8) "External" }
Run Code Online (Sandbox Code Playgroud)
这会工作得很好,但不是好方法。例如,如果您需要检查数组的 null 键,则此空字符串将返回 true。这种方法会在其他严格类型语言(如 java 和 C)中出现语法错误。因此最好避免这种编码:)