duandan1995 2016-10-17 12:56
浏览 7
已采纳

将两个数组映射到一个具有nxm元素的数组中

I have two arrays:

Array1
(
    [0] => Mon
    [1] => Tue
    [2] => Wed
    [3] => Thu
)
Array2
(
    [0] => 12:00 am,04:00 pm
    [1] => 07:00 am,02:00 pm
)

I need to make a result array like this:

(
            [startTime] => Array
                (
                    [hours] => 07
                    [minutes] => 00 am
                )

            [endTime] => Array
                (
                    [hours] => 02
                    [minutes] => 00 pm
                )
            [weekday] => Monday
        )

Ideally, there will be 4 * 2 = 8 elements in new array. I do get 8, but don't get proper data.

here is my code:

$j = 0;
        foreach($array2 as $key => $value) {
            $start_time = explode(',', $value)[0];
            if(!empty($start_time)) {
                $end_time = explode(',', $value)[1];
                $gen_timings_array[$j]['startTime']['hours'] = explode(':',$start_time)[0];
                $gen_timings_array[$j]['startTime']['minutes'] = explode(':',$start_time)[1];
                $gen_timings_array[$j]['endTime']['hours'] = explode(':',$end_time)[0];
                $gen_timings_array[$j]['endTime']['minutes'] = explode(':',$end_time)[1];

                foreach ($array1 as $key => $value) {
                    $gen_timings_array[$j]['weekday'] = $enum[$value];
                    ++$j;
                }
            }
        }

And this is the output that I get:

Array
(
    [0] => Array
        (
            [startTime] => Array
                (
                    [hours] => 12
                    [minutes] => 00 am
                )

            [endTime] => Array
                (
                    [hours] => 04
                    [minutes] => 00 pm
                )
            [weekday] => Monday
        )

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

    [2] => Array
        (
            [weekday] => Wednesday
        )

    [3] => Array
        (
            [weekday] => Thursday
        )

    [4] => Array
        (
            [startTime] => Array
                (
                    [hours] => 07
                    [minutes] => 00 am
                )

            [endTime] => Array
                (
                    [hours] => 02
                    [minutes] => 00 pm
                )
            [weekday] => Monday
        )

    [5] => Array
        (
            [weekday] => Tuesday
        )

    [6] => Array
        (
            [weekday] => Wednesday
        )

    [7] => Array
        (
            [weekday] => Thursday
        )

)
  • 写回答

1条回答 默认 最新

  • 普通网友 2016-10-17 13:14
    关注

    What about this:

    $j = 0;
    foreach($array2 as $key => $value) {
        $start_time = explode(',', $value)[0];
        if(!empty($start_time)) {
            $end_time = explode(',', $value)[1];
    
            foreach ($array1 as $key => $value) {
                $gen_timings_array[$j]['startTime']['hours'] = explode(':',$start_time)[0];
                $gen_timings_array[$j]['startTime']['minutes'] = explode(':',$start_time)[1];
                $gen_timings_array[$j]['endTime']['hours'] = explode(':',$end_time)[0];
                $gen_timings_array[$j]['endTime']['minutes'] = explode(':',$end_time)[1];
    
                $gen_timings_array[$j]['weekday'] = $enum[$value];
                ++$j;
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵