我有一个数组,第一个键从一个开始,我需要它。
// $ collections的第一次迭代
$ collections [1] = $ data1;
$ collections [2] = $ data2;
...
//为了我自己的目的,它不必以零开头
代码>
所以我做了所需的东西:
// count($ collections)= 56;
$ collections = array_map(function($ array)use($ other_vars){
//这里有更多东西
//最后回复:
return $ arr + ['newVariable'= $ newVal];
} $集合);
代码>
当 var_dump($ collections);
时,第一个键是1,这很好。
但是,当我想在数组中添加另一个变量时:
//从一个// count开始的另一个数组($ anotherArray)= 56;
$ anotherArray [] = ['more'=>'values'];
$ collections = array_map(function($ arr,$ another)use($ other_vars){
//这里有更多东西
//最后回复:
return $ arr + ['newVariable'= $ newVal,'AnotherVar'=> $ another ['key']];
} $的集合,$ anotherArray);
代码>
然后,如果我再次迭代$ collections,它现在从零开始。为什么?如何在第一个键中从1开始而不是从零开始? 有什么想法吗?
那么为什么第一个键变为零?我该如何保持它成为一个?
您可以通过执行以下代码重现问题(例如在线php上):
<预> <代码> $集合[1] = [ 'DATA1'=> 'VALUE1']; $集合[2] = [ 'DATA2'=> '值2']; $集合[3] = [ 'DATA3'=> '值3']; $集合[4] = [ 'DATA4'=> 'VALUE4']; $另一[1] = [ 'AnotherData'=> 'AnotherVal1']; $另一[2] = [ 'AnotherData'=> 'AnotherVal2']; $另一[3] = [ 'AnotherData'=> 'AnotherVal3']; $另一[4] = [ 'AnotherData'=> 'AnotherVal4']; 后续代码var_dump($集合); echo'现在添加 lerouche 建议的解决方案
echo'
';
array_unshift($ grandcollection2,null);
未设置($ grandcollection2 [0]);
后续代码var_dump($ grandcollection2);
代码>
它现在按预期工作
答案 0 :(得分:1)
创建$collections
后,使用垃圾值取消移动数组,然后将其删除:
array_unshift($collections, null);
unset($collections[0]);
这会将所有内容减少一个,将第一个真实元素移动到索引1。