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
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?