【发布时间】:2017-09-27 15:44:33
【问题描述】:
我总是做类似的事情
例如来自我在 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 => $value...
不过没关系。
但事实并非如此。
因为我知道。我记得。我做了很多次就像
foreach($a as $b)
{
$b = .......
}
它奏效了。但现在不是。
所以我不明白。但我必须并且想要。
我正在寻找答案,但可以找到它。
为什么有时它对我如此有效,而其他时候却不起作用,我需要 apersand 或 key => 价值玩?
请谅解
为什么一次有效,另一次无效。
【问题讨论】:
-
它永远不会与
foreach($a as $b)一起使用,必须为foreach($a as &$b)或foreach($a as $k => $b) { $a[$k] = 'something'; }用于数组。foreach($a as $b)适用于通过引用访问的对象。 -
@AbraCadaver
foreach($a as $b)将工作如果$b是对象。 -
@u_mulder:是的,我记得这一点并进行了测试。
-
所以,OP 问题的答案是,在一种情况下它是一个对象,而在另一种情况下它是数组。
标签: php arrays foreach reference