PHP:需要什么值数组键才能导致下一个数字键分配?

问题描述 投票:0回答:1

换句话说,可以为 $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 和 ''(空字符串),但都没有带来预期的结果。

php arrays assign
1个回答
0
投票

目前没有办法将数组

$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"
}

要填补所有空白,您需要使用找到它们的算法 - 例如一个存储最后使用的数字索引,然后递增它并检查索引是否空闲,直到找到下一个空闲索引。

如果您不需要填补空白,您展示的解决方案就是我所使用的。

© www.soinside.com 2019 - 2024. All rights reserved.