在Php中将两个多维数组合并为一个

时间:2018-08-23 00:43:58

标签: php arrays multidimensional-array

嗨,我在PhP中有两个多维数组,我正在尝试创建一个更平坦的新数组。

第一个数组称为weeksBooked,其结构如下:

Array
(
[0] => Array
    (
        [periodweekno] => 27
    )

[1] => Array
    (
        [periodweekno] => 28
    )

[2] => Array
    (
        [periodweekno] => 29
    )
)

第二个称为预订。这存储了该周特定儿童的预订日期。

Array
(
[0] => Array
    (
        [periodDayName] => Monday
    )

[1] => Array
    (
        [periodDayName] => Tuesday
    )

[2] => Array
    (
        [periodDayName] => Thursday
    )

[3] => Array
    (
        [periodDayName] => Friday
    )

)

我正在尝试合并两个数组,并检查perioddayName是否为Monday,然后在“新”合并数组中,我可以将其显示为“ monday” => 0,如果不是,则将其显示为“ monday” => 1我想在每个“工作日(即星期一至星期五)”重复一次。

如果我不能很好地解释它,我会道歉,但这是我想要实现的一种可以绑定到表的结构:

{Weekno:27, Monday:1,Tuesday:0,Wednedsay:1,Thursday:1,Friday:0
Weekno:28, Monday:0,Tuesday:0,Wednesday:1, Thursday:0,Friday:1}

到目前为止,这是我的尝试,但我无法将其压扁:

 $result = array();
 foreach ($weeksbooked as $week) {

       $sql = "SELECT periodDayName FROM Attendance WHERE weekno = ". $week['periodweekno'];

        $bookings = $this->db->RawQuery($sql,null);
       // print_r($bookings);

        foreach ($bookings as $booking) {

            $daysbooked= array();

            if($booking['periodDayName'] == 'Monday'){
                $daysbooked['monday'] = 0;
            }else{
                $daysbooked['monday'] = 1;
            }
             if($booking['periodDayName'] == 'Tuesday'){
                $daysbooked['tuesday'] = 0;
            }else{
                $daysbooked['tuesday'] = 1;
            }
       .....
     array_push($weeksbooked,$daysbooked)
   }

array_push($result,$weekbooked)

1 个答案:

答案 0 :(得分:2)

也许是这样吗?

$result = array();
foreach ($weeksbooked as $week) {
    $sql = "SELECT periodDayName FROM Attendance WHERE weekno = ". $week['periodweekno']; 
    $bookings = $this->db->RawQuery($sql,null);
    // print_r($bookings);  
    $thisweek = array('Weekno' => $week['periodweekno'], 
                      'Monday' => 0,
                      'Tuesday' => 0,
                      'Wednesday' => 0,
                      'Thursday' => 0,
                      'Friday' => 0
                      );
    foreach ($bookings as $booking) {
        $thisweek[$booking['periodDayName']] = 1;
    }
    $result[] = $thisweek;
}
print_r($result);

它应该产生类似您所需要的输出。在表中没有原始数据,很难确定。