dousongxuan7507 2017-08-31 11:47
浏览 30
已采纳

在foreach中更改数组

I'm editing my array in a foreach, but when I return the values I get only one array as the result and not my 500 events.

Can someone explain why I can't get my 500 array's?

private function getEventsScroll($param = null)
{


$sql = $dbh->prepare('SELECT * FROM events WHERE date >= NOW() AND status = "0" ORDER BY `date` ASC');

$sql->execute();
$events = $sql->fetchAll(PDO::FETCH_ASSOC);

foreach ($events as &$event) {

    $output = [
        'name' => setHalveText(ucfirst($event['name']), 17),
        'sub_text' => setHalveText($event['sub_text'], 45),
        'datetime' => getDaytimeFormat($event['date'], 'Y-m-d\TH:i:s.u'),
        'dayNumber' => getDaytimeFormat($event['date'], 'd'),
        'monthName' => getDaytimeFormat($event['date'], 'F'),
        'year' => getDaytimeFormat($event['date'], 'l'),
        'time_start' => setTime($event['time_start']),
        'time_end' => setTime($event['time_start']),
        'url' => '../../event/' . setUuid($event['uid']) . ':'. getEventSlug($event['name']), 
    ];
    unset($event['name']);
    unset($event['sub_text']);
    unset($event['time_start']);
    unset($event['time_end']);

    $event = array_merge($event, $output);

    return $event;
    }
}
  • 写回答

1条回答 默认 最新

  • dpi9530 2017-08-31 11:58
    关注

    You have to do it like below (changes are commented):-

    private function getEventsScroll($param = null){
    
        $sql = $dbh->prepare('SELECT * FROM events WHERE date >= NOW() AND status = "0" ORDER BY `date` ASC');
    
        $sql->execute();
        $events = $sql->fetchAll(PDO::FETCH_ASSOC);
    
        foreach ($events as &$event) {
    
            $output = [
                'name' => setHalveText(ucfirst($event['name']), 17),
                'sub_text' => setHalveText($event['sub_text'], 45),
                'datetime' => getDaytimeFormat($event['date'], 'Y-m-d\TH:i:s.u'),
                'dayNumber' => getDaytimeFormat($event['date'], 'd'),
                'monthName' => getDaytimeFormat($event['date'], 'F'),
                'year' => getDaytimeFormat($event['date'], 'l'),
                'time_start' => setTime($event['time_start']),
                'time_end' => setTime($event['time_start']),
                'url' => '../../event/' . setUuid($event['uid']) . ':'. getEventSlug($event['name']), 
            ];
            unset($event['name']);
            unset($event['sub_text']);
            unset($event['time_start']);
            unset($event['time_end']);
    
            array_merge($event, $output);
    
        }
    
        return $events; //return at last
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)