簡體   English   中英

我如何重組數組

[英]How can I regroup an array

我有以下查詢

$sql = 'SELECT  F.ID, F.name as famName,F.contactEmail,F.address,F.phone,F.sitting,
                M.date,M.time,M.meeting,
                P.name as partName,P.email,
                R.numAttendees,R.deltoken
        FROM    Registration R, meeting M,
                Participants P,Family F
        WHERE date = CURDATE() + INTERVAL 1 DAY
            AND R.participant = P.ID
            AND R.meeting= M.ID
            AND M.family = F.ID
        ORDER BY M.meeting';
$data = $pdo -> query($sql)->fetchAll(PDO::FETCH_GROUP);

這正是我所需要的。 但是,然后我需要使用通過電子郵件分組的相同信息。 有什么方法可以做到,而無需重新查詢數據庫?

$grouped_by_email = array();
foreach($data as $row) {
    if(!isset($grouped_by_email[$row['email']])) {
         $grouped_by_email[$row['email']] = array();
    }
    $grouped_by_email[$row['email']][] = $row;
}

這將創建一個以電子郵件為鍵的數組數組。

如果要執行此操作類似於SQL中“ GROUP BY”的工作方式,請使用以下命令:

$grouped_by_email = array();
foreach ($data as $row) {
    if (!isset($grouped_by_email[$row['email']])) {
        $grouped_by_email[$row['email']] = $row;
    }
    else {
        $grouped_by_email[$row['email']] = aggregate($grouped_by_email[$row['email']], $row);
    }
}

function aggregate($existingValue, $newValue)
{
    // Here write the olumn you want to combine and how.
    $newValue['numAttendees'] += $existingValue['numAttendees'];
    return $newValue;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM