如何使用相同的值循环遍历数组并将它们分组

时间:2016-09-28 18:05:08

标签: arrays loops cakephp foreach

我有一个嵌套的foreach循环,它遍历类和产品。在一个案例中,我有一个瑜伽课,有两个产品;第1节和第2节。 注册会话意味着参加所有日期。

会话1有5个唯一日期,会话2有5个唯一日期。目前,我的foreach循环显示每个人自己"提供": 瑜伽 第1节 16年10月1日 下午5点 - 下午6点

第1节 16年10月8日 下午3点 - 下午4点

第1节 16年10月11日 上午10点 - 上午11点

第1节 10/12/16 上午10点 - 上午11点

第1节 16年10月15日 下午4点 - 5点

第二节 16年11月1日 下午5点 - 下午6点

第二节 16年11月9日 下午3点 - 下午4点

第二节 16年11月15日 上午10点 - 上午11点

第二节 16年11月16日 上午10点 - 上午11点

第二节 16年11月23日 下午4点 - 下午5点

所以现在我遇到了问题。也许我需要另一个循环,以便在每个Session提供中列出5个唯一日期?

第1节

16年10月1日 下午5点 - 下午6点

16年10月8日 下午3点 - 下午4点

16年10月11日 上午10点 - 上午11点

10/12/16 上午10点 - 上午11点

16年10月15日 下午4点 - 下午5点

第2节

16年11月1日 下午5点 - 下午6点

16年11月9日 下午3点 - 下午4点

16年11月15日 上午10点 - 上午11点

16年11月16日 上午10点 - 上午11点

16年11月23日 下午4点 - 下午5点

foreach ($rows as $row) {

if ($row['offering']=="Session 1"){
// do something

}

if ($row['offering']=="Session 2") {
// do something
}

}

尝试了这个,但它仍然将所有行显示为单独的行

$array = array($row['offering']);
    foreach ($array as $key => $val) {
   // do stuff
echo $val;
}

}

我没有走上正确的道路...会很感激一些指导。

示例var_dump

["YOGA"]=> array(10) { 
[0]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "0550AA8D-F437-4578-BD98-95C51D017E62" ["offering"]=> string(15) "YOGA Session 1" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "We" ["StartDate"]=> string(10) "10/05/2016" ["EndDate"]=> string(10) "10/05/2016" ["StartTime"]=> string(7) " 6:00PM" ["EndTime"]=> string(7) "10:00PM" ["Location"]=> string(23) "Off-Site, Quiet Room" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(1) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Sep 29 2016 12:00AM" } 

[1]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "0550AA8D-F437-4578-BD98-95C51D017E62" ["offering"]=> string(15) "YOGA Session 1" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Su" ["StartDate"]=> string(10) "10/09/2016" ["EndDate"]=> string(10) "10/09/2016" ["StartTime"]=> string(7) " 9:00AM" ["EndTime"]=> string(7) " 5:00PM" ["Location"]=> string(8) "Off-Site" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(1) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Sep 29 2016 12:00AM" } 

[2]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "0550AA8D-F437-4578-BD98-95C51D017E62" ["offering"]=> string(15) "YOGA Session 1" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "We" ["StartDate"]=> string(10) "10/12/2016" ["EndDate"]=> string(10) "10/12/2016" ["StartTime"]=> string(7) " 6:00PM" ["EndTime"]=> string(7) "10:00PM" ["Location"]=> string(13) "Quiet Room" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(1) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Sep 29 2016 12:00AM" } 

[3]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "0550AA8D-F437-4578-BD98-95C51D017E62" ["offering"]=> string(15) "YOGA Session 1" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Sa" ["StartDate"]=> string(10) "10/15/2016" ["EndDate"]=> string(10) "10/15/2016" ["StartTime"]=> string(7) " 9:00AM" ["EndTime"]=> string(7) " 5:00PM" ["Location"]=> string(11) "YOGA Class" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(1) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Sep 29 2016 12:00AM" } 

[4]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "0550AA8D-F437-4578-BD98-95C51D017E62" ["offering"]=> string(15) "YOGA Session 1" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Su" ["StartDate"]=> string(10) "10/16/2016" ["EndDate"]=> string(10) "10/16/2016" ["StartTime"]=> string(7) " 9:00AM" ["EndTime"]=> string(7) " 5:00PM" ["Location"]=> string(11) "YOGA Class" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(1) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Sep 29 2016 12:00AM" } 

[5]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "DE7A6045-2908-47B6-AD13-6DC12FF42F6E" ["offering"]=> string(15) "YOGA Session 2" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Tu" ["StartDate"]=> string(10) "11/01/2016" ["EndDate"]=> string(10) "11/01/2016" ["StartTime"]=> string(7) " 6:00PM" ["EndTime"]=> string(7) "10:00PM" ["Location"]=> string(23) "Off-Site, Quiet Room" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(3) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Oct 26 2016 12:00AM" } 

[6]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "DE7A6045-2908-47B6-AD13-6DC12FF42F6E" ["offering"]=> string(15) "YOGA Session 2" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Su" ["StartDate"]=> string(10) "11/06/2016" ["EndDate"]=> string(10) "11/06/2016" ["StartTime"]=> string(7) " 9:00AM" ["EndTime"]=> string(7) " 5:00PM" ["Location"]=> string(8) "Off-Site" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(3) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Oct 26 2016 12:00AM" } 

[7]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "DE7A6045-2908-47B6-AD13-6DC12FF42F6E" ["offering"]=> string(15) "YOGA Session 2" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Tu" ["StartDate"]=> string(10) "11/08/2016" ["EndDate"]=> string(10) "11/08/2016" ["StartTime"]=> string(7) " 6:00PM" ["EndTime"]=> string(7) "10:00PM" ["Location"]=> string(13) "Quiet Room" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(3) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Oct 26 2016 12:00AM" } 

[8]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "DE7A6045-2908-47B6-AD13-6DC12FF42F6E" ["offering"]=> string(15) "YOGA Session 2" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Sa" ["StartDate"]=> string(10) "11/12/2016" ["EndDate"]=> string(10) "11/12/2016" ["StartTime"]=> string(7) " 9:00AM" ["EndTime"]=> string(7) " 5:00PM" ["Location"]=> string(11) "YOGA Class" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(3) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Oct 26 2016 12:00AM" } 

[9]=> array(20) { ["category"]=> string(7) "Classes" ["course"]=> string(5) "YOGA" ["CourseOfferingID"]=> string(36) "DE7A6045-2908-47B6-AD13-6DC12FF42F6E" ["offering"]=> string(15) "YOGA Session 2" ["Semester"]=> string(9) "Fall 2016" ["Days"]=> string(2) "Su" ["StartDate"]=> string(10) "11/13/2016" ["EndDate"]=> string(10) "11/13/2016" ["StartTime"]=> string(7) " 9:00AM" ["EndTime"]=> string(7) " 5:00PM" ["Location"]=> string(11) "YOGA Class" ["pricing"]=> NULL ["SIZE"]=> int(10) ["REGISTERED_COUNT"]=> int(3) ["WAITING_LIST_COUNT"]=> int(0) ["ProgramClassificationID"]=> string(36) "AFCAB0B2-24FE-427B-8590-812D74749E6A" ["ProgramClassificationName"]=> string(8) "Wellness" ["SemesterID"]=> string(36) "854E61F8-B564-48F6-AFCD-FAEE597AFF0C" ["CourseID"]=> string(36) "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B" ["RegCloseDate"]=> string(19) "Oct 26 2016 12:00AM" } }

2 个答案:

答案 0 :(得分:0)

如果您真的想使用这种格式的数组,那么您可以通过以下代码获得此解决方案,但不应使用此解决方案,因为它不是最佳解决方案。你必须使用适当的数据结构,虽然我已经给出了临时解决问题的代码:

$yoga = [["category" => "Classes","course" => "Yoga","CourseOfferingId" => "0550AA8D-F437-4578-BD98-95C51D017E62","offering" => "YOGA Session 1","Semester" => "Fall 2016","Days" =>"We", "StartDate" => "10/05/2016", "EndDate" => "10/05/2016", "StartTime" => " 6:00PM", "EndTime" => "10:00PM","Location" => "Off-Site, Quiet Room","pricing" => NULL,"SIZE" =>10,"REGISTERED_COUNT" => 10,"WAITING_LIST_COUNT" => 0,"ProgramClassificationID" => "AFCAB0B2-24FE-427B-8590-812D74749E6A","ProgramClassificationName" =>"Wellnes","SemesterID" => "854E61F8-B564-48F6-AFCD-FAEE597AFF0C","CourseID" => "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B","RegCloseDate" => "Sep 29 2016 12:00AM"],
     ["category" => "Classes","course" => "Yoga","CourseOfferingId" => "0550AA8D-F437-4578-BD98-95C51D017E62","offering" => "YOGA Session 2","Semester" => "Fall 2016","Days" =>"We", "StartDate" => "10/05/2011", "EndDate" => "10/05/2016", "StartTime" => " 6:00PM", "EndTime" => "10:00PM","Location" => "Off-Site, Quiet Room","pricing" => NULL,"SIZE" =>10,"REGISTERED_COUNT" => 10,"WAITING_LIST_COUNT" => 0,"ProgramClassificationID" => "AFCAB0B2-24FE-427B-8590-812D74749E6A","ProgramClassificationName" =>"Wellnes","SemesterID" => "854E61F8-B564-48F6-AFCD-FAEE597AFF0C","CourseID" => "84A92D24-12C3-4487-93C1-4DBFAF2D9A3B","RegCloseDate" => "Sep 29 2016 12:00AM"]];

$sessions = [];
$sessionInformation = [];
foreach($yoga as $key => $yogaElements)
{
   $temporarySessionInfo = [];
   $sessionName = "";
   foreach($yogaElements as $key => $value )
   {
        if($key == "offering"){
           $sessionName = explode(" ",$value)[1]." ".explode(" ",$value)[2];
        }
        if($key == "StartDate"){
           array_push($temporarySessionInfo,"Start Date: ".$value);
        }
        if($key == "EndDate"){
           array_push($temporarySessionInfo,"End Date: ".$value);
        }
        if($key == "StartTime"){
           array_push($temporarySessionInfo,"StartTime: ".$value);
        }
        if($key == "EndTime"){
           array_push($temporarySessionInfo,"End Time: ".$value);
        }   
   }
   if(!array_key_exists($sessionName,$sessions))
   {
       $sessions[$sessionName] = $temporarySessionInfo;
   }
   else
   {
    $sessions[$sessionName] = array_merge($sessions[$sessionName], $temporarySessionInfo);
   }
}

foreach($sessions as $key => $values)
{
   echo $key."<br/>";
   foreach($values as $value)
   {
      echo $value."<br/>";
   }
   echo "<br/>";
}

答案 1 :(得分:0)

我最终在嵌套的foreach中使用了这个...

if ($key=="YOGA") 
{
for($i=0;$i<count($value);$i++)
{if(!array_key_exists($value[$i]["offering"], $class))     
$class[$value[$i]["offering"]] = array();
array_push($class[$value[$i]["offering"]], $value[$i]);
}

    foreach($class as $key => $rows):
    //echo something
    echo $key;
        $k = 0;
        foreach ($rows as $row) :
        //echo something
        $k++;
        endforeach;
    endforeach;
} else {
// show remaining non-YOGA classes
}