我总是这样做
e.g。来自我在Laravel的最后一个项目
foreach( $sections as $section )
{
$section->date = Carbon::parse($section->date)->diffForHumans();
}
它运作良好。从来没有问题,数组被修改为我想要的
但现在我做了这个
$events = $this->events;
foreach($events as $event)
{
$date = new \DateTime($event['date']);
$event['date'] = (int)$date->format('d');
echo $event['date'];
var_dump($event);
}
var_dump($events);
$this->events = $events;
它不能正常工作,循环和外部循环中的不同值。
我看到了什么是坏事,我发现了它是什么,给&
或做foreach $ key => $值...
但是没关系。
但事实并非如此。
因为我知道。我记得。我曾多次做过像
这样的事情foreach($a as $b)
{
$b = .......
}
它有效。但现在不是。
所以我不明白。但我必须并且想要。
我正在寻找答案,但可以找到它。
为什么有一次它对我有用,而其他时间不起作用,我需要apersand或key =>玩价值?
请理解< 3
为什么有一次它正在工作,而另一个没有。
答案 0 :(得分:3)
foreach
遍历数组的副本,因此除非您创建引用,否则只对该临时副本进行数组元素的修改:< / p>
foreach($a as &$b) {
$b = 'something';
}
或者按键修改原始数组:
foreach($a as $k => $b) {
$a[$k] = 'something';
}
对于一个对象数组,该数组是副本,但 copy 中的对象是对原始数组的引用。因此,对副本中对象的修改将反映在原始数组中:
foreach($a as $b) {
$b->var = 'something';
}