如何在PHP中使用键作为序数元素将元素添加到数组

时间:2018-08-14 11:08:03

标签: php arrays

如何使用键作为序数元素将元素添加到数组?

首先,这是一个理论问题,我正在寻找答案,而不是达到目标的一种方法。

我有一个生成键的函数,我问自己是否有一个键可以将元素添加为数组的序数元素

$a=[];
$key=generateKey();
$a[$key]="pino";
var_export($a);

我希望得到这个结果:

array (
  0 => 'pino'
)

更高级的情况可能是

array (
  0 => 'a',
  '7239ea2b5dc943f61f3c0a0276c20974' => 'b',
  1 => 'c',
  'c180aaadf5ab10fb3a733f43f3ffc4b3' => 'lino',
  '48bb6e862e54f2a795ffc4e541caed4d' => 'gino',
  2 => 'pino',      // <- take 2 as index
)

编辑

generateKey的假设实现:

function generateKey($array){
    $_rv=0;
    foreach ($array as $k => $v){
        if(is_numeric($k)==false){
            continue;
        }
        $_rv=$k+1;
    }
    return $_rv;
}

3 个答案:

答案 0 :(得分:0)

我不明白您真正的问题是什么...但是据您的评论我已经理解...

$a=[];
$key=generateKey();

为php中的arry分配密钥...下面的行是正确的。

$a[$key]="pino";

如果您要使用{key:value} ...形式的数据

var_export(json_encode($a));

答案 1 :(得分:0)

如果我理解正确,那么您只想获得数组的最高数字索引。您可以尝试以下方法:

$maxIdx = max(array_filter(array_keys($array), 'is_numeric')) ?: -1;
$array[$maxIdx + 1] = 'pino';

答案 2 :(得分:0)

通过查看array-key-last的文档,我意识到count函数可以实现生成新的数字键而不受CPU限制:

$key=count($a);
$a[$key]="pino";
var_export($a);