下面是循环:
foreach($event['Event']['user_id'] as $employee){
for($date; $date <= $end_date; $date = strtotime("+1 day", $date))
{
if(strpos($weekdays, date("N", $date)) !== false){
$real_date = date("Y-m-d", $date);
$event['Event']['date'] = $real_date;
$event['Event']['user_id'] = $employee;
$this->Event->create();
$this->Event->save($event);
debug($event['Event']['user_id']);
}
}
}*$event'Event'*内容如下:
array(
(int) 0 => '23',
(int) 1 => '24',
(int) 2 => '27',
(int) 3 => '28')如果我试图在for循环之前打印每个$employee,则会打印所有四条记录,但是for循环只应用于第一条记录。任何帮助都是非常感谢的。
编辑:添加pr($event)的结果
Array([Event] => Array
(
[project_id] => 62
[user_id] => Array
(
[0] => 23
[1] => 24
[2] => 27
[3] => 28
[4] => 29
)
[hours] => 4
[minutes] => 0
[assignment] =>
[material] =>
[date] => 2013-10-6
[start_time] => Array
(
[hour] => 09
[min] => 00
)
[finish_time] => Array
(
[hour] => 13
[min] => 00
)
[repeat] => 0
[finish_date] =>
[weekdays] =>
))
发布于 2013-10-17 16:41:19
让我们看看,在for的第一个循环中,您可以执行以下操作
for($date; $date <= $end_date; $date = strtotime("+1 day", $date))
{
if(strpos($weekdays, date("N", $date)) !== false){
$real_date = date("Y-m-d", $date);
$event['Event']['date'] = $real_date;
$event['Event']['user_id'] = $employee;
$this->Event->create();
$this->Event->save($event);
debug($event['Event']['user_id']);
}
}该特殊情况下的$employee数组是23 (参见您发布的示例)。注意if语句中的特定行。
$event['Event']['user_id'] = $employee;所以基本上,$event['Event']['user_id']不再是
$event['Event']['user_id'] = array(
(int) 0 => '23',
(int) 1 => '24',
(int) 2 => '27',
(int) 3 => '28')但
$event['Event']['user_id'] = 23;而不是。因此,foreach函数只应用于第一条记录,然后停止。我不建议在foreach中更改foreach参数(就像本例中的那样),它总是(或者几乎总是)导致混淆。
由于我不知道您要用这个函数做什么,所以我不能给您更多的建议,而是重新考虑修复这个函数的逻辑。可能是一个简单的变量,比如
$users = $event['Event']['user_id'];
foreach ($users as $employee) {
/* the rest remains the same*/
}就够了。
https://stackoverflow.com/questions/19427221
复制相似问题