2017-08-31 55 views
-3

我正在编辑我的数组在foreach中,但是当我返回值时,我只得到一个数组作为结果而不是我的500个事件。更改数组在foreach

有人可以解释为什么我不能得到我的500阵列?

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; 
    } 
} 
+2

删除此行'返回$事件;'和改变这种'的foreach($事件$事件){'到'foreach($ events as&$ event){'然后再试一次 –

+1

因为你不明白'return'的含义。 –

+0

我使用返回,因为它是在一个函数? –

回答

1

你必须这样做像下面(更改注释): -

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 
}