PHP array_map() 总是将我的第一个索引值更改为零值

PHP array_map() always change my first index value to zero value

我在 Laravel

中有一个控制器

这是我的collection

$milestones = $this->getmilestones();
dump($milestones);

值为

array:3 [▼
  0 => "["109"
  1 => "110"
  2 => "111"]"
]

我根据答案 尝试了这段代码。 所以,我有这样的代码

array_unshift($milestones, $milestones[0]);
unset($milestones[0]);
dump($milestones);

并且值为(索引已更改)

array:3 [▼
  1 => "["109"
  2 => "110"
  3 => "111"]"
]

因此,在取消 collection 的移位后,我尝试使用 array_map 将字符串数组转换为整数数组。

$milestones = array_map('intval', $milestones);
dump($milestones);

但是,我仍然得到了相同的值。第一个索引 returns 0 像这样

array:3 [▼
  1 => 0
  2 => 110
  3 => 111
]

我该怎么办?

试试这个

array_splice($milestone, 0, 1);
dump($milestone);

使用 array_values 这应该按照您需要的方式重新索引您的数组:

$milestones = array_values($milestones);

如果$milestones是一个集合:

$milestones = $milestones->values();

方法 values() 将对集合实例中定义的项目调用 array_values

来源:http://php.net/manual/en/function.array-values.php

啊,终于得到想要的结果了。我尝试删除方括号和双引号。因为里程碑是集合。所以我的代码是

$milestones = str_replace(array('[', ']', '"'),'',$milestones);

谢谢大家的帮助