换句话说,可以为 $key 分配什么值,以便以下两行创建完全相同的结果:
$arr[] = $value;
$arr[$key] = $value;
我需要解决的任务如下所示:我需要使用指定的键向数组添加一个新值,如果未指定键,则使用下一个可用的数字键:
protected $_arr;
...
public function addValue($value, $key = NULL) {
$this->_arr[$key] = $value;
}
工作解决方案是这样的:
public function addValue($value, $key = NULL) {
if($key === NULL) $this->_arr[] = $value;
else $this->_arr[$key] = $value;
}
我怀疑密钥没有这样的值,因为我尝试了明显的 NULL 和 ''(空字符串),但都没有带来预期的结果。
目前没有办法将数组
$key
设置为自动增加数字键索引的东西。
即使是
$arr[] = 'value';
语法也不能完全按照你写的去做——它没有找到“下一个可用的数字键”,而是递增找到的最高数字。例子:
$test = [];
$test[] = 'test0';
$test['666'] = 'test666';
$test[] = 'test1';
var_dump($test);
结果:
array(3) {
[0]=>
string(5) "test0"
[666]=>
string(7) "test666"
[667]=>
string(5) "test1"
}
要填补所有空白,您需要使用找到它们的算法 - 例如一个存储最后使用的数字索引,然后递增它并检查索引是否空闲,直到找到下一个空闲索引。
如果您不需要填补空白,您展示的解决方案就是我所使用的。