如何使用键作为序数元素将元素添加到数组?
首先,这是一个理论问题,我正在寻找答案,而不是达到目标的一种方法。
我有一个生成键的函数,我问自己是否有一个键可以将元素添加为数组的序数元素
$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;
}
答案 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);