我想知道,如果我们保留一个空字符串作为数组键,比如这个,可以吗
$test = array (
'' => 'Select',
1 => 'Internal',
2 => 'External'
);
如有任何建议,我们将不胜感激。
数组键应该是整数或字符串
将空字符串作为数组键处理远非理想的做法
此外,Null将强制转换为空字符串,即键Null实际上将存储在"下
但这样的方法会使您的数组变得模糊和不稳定
考虑以下示例:
$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
下一个例子是模糊性:
var_dump($test[""]); // output "select"
最后一个例子出现了错误(注意):
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" }
这将很好地工作,但不是一个好方法。例如,如果您需要检查数组的null键,那么这个空字符串将返回true。这种方法会在其他严格类型的语言(如java和C)中产生语法错误。因此最好避免这样的编码:)