php array_map在第一个键最初为1时将其更改为零

时间:2017-05-17 23:22:11

标签: php arrays array-map

我有一个数组,第一个键从一个开始,我需要它。

  // $ 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'
'; 后续代码var_dump($另一人); echo'
'; $ grandcollection = array_map(函数($ a)乙酸{     返回$ a + ['More'=>'datavalues']; } $集合); 后续代码var_dump($ grandcollection); echo'
'; $ grandcollection2 = array_map(function($ a,$ b){     返回$ a + ['More'=>'datavalues','yetMore'=> $ b ['AnotherData']]; } $的集合,$另一个); 后续代码var_dump($ grandcollection2);

现在添加 lerouche 建议的解决方案

  echo'
'; array_unshift($ grandcollection2,null); 未设置($ grandcollection2 [0]); 后续代码var_dump($ grandcollection2);

它现在按预期工作

1 个答案:

答案 0 :(得分:1)

创建$collections后,使用垃圾值取消移动数组,然后将其删除:

array_unshift($collections, null);
unset($collections[0]);

这会将所有内容减少一个,将第一个真实元素移动到索引1。