Php 数组合并/插入不工作

Php 数组合并/插入不工作,php,html,arrays,json,loops,Php,Html,Arrays,Json,Loops,现在我有两个数组: first one: "workingHours": [ { "opening": "09:30", "closing": "13:30", "dayName": "sunday" }, { "opening": "",

现在我有两个数组:

first one: "workingHours": [ { "opening": "09:30", "closing": "13:30", "dayName": "sunday" }, { "opening": "", "closing": "", "dayName": "monday" }, { "opening": "", "closing": "", "dayName": "tuesday" }, { "opening": "10:30", "closing": "06:30", "dayName": "wednesday" }, { "opening": "01:00", "closing": "08:00", "dayName": "thursday" }, { "opening": "", "closing": "", "dayName": "friday" }, { "opening": "", "closing": "", "dayName": "saturday" }, ], 第一个: “工作时间”:[ { “开幕式”:“09:30”, “结束”:“13:30”, “dayName”:“星期日” }, { “开场白”:“开场白”, “结案”:“, “dayName”:“星期一” }, { “开场白”:“开场白”, “结案”:“, “dayName”:“星期二” }, { “开幕式”:“10:30”, “结束”:“06:30”, “dayName”:“星期三” }, { “开幕式”:“01:00”, “结束”:“08:00”, “dayName”:“星期四” }, { “开场白”:“开场白”, “结案”:“, “dayName”:“星期五” }, { “开场白”:“开场白”, “结案”:“, “dayName”:“星期六” }, ], 第二个: “折扣”:[ { “开始时间”:“13:00:00”, “to_时间”:“14:50:00”, “折扣”:“20”, “dayName”:“星期三” }, { “from_time”:“06:13:16”, “to_时间”:“04:14:11”, “折扣”:“20”, “dayName”:“星期一” }, { “from_time”:“05:10:15”, “to_时间”:“06:10:17”, “折扣”:“20”, “dayName”:“星期二” }, { “from_time”:“06:59:16”, “to_时间”:“04:19:11”, “折扣”:“20”, “dayName”:“星期一” } ], 现在我想要这样的输出:

Wanted Output: "workingHours": { "opening": "", "closing": "", "dayName": "monday" { "from_time": "06:13:16", "to_time": "04:14:11", "discount": "20", "dayName": "monday" }, { "from_time": "06:59:16", "to_time": "04:19:11", "discount": "20", "dayName": "monday" } }, 想要的输出: “工作时间”:{ “开场白”:“开场白”, “结案”:“, “dayName”:“星期一” { “from_time”:“06:13:16”, “to_时间”:“04:14:11”, “折扣”:“20”, “dayName”:“星期一” }, { “from_time”:“06:59:16”, “to_时间”:“04:19:11”, “折扣”:“20”, “dayName”:“星期一” } }, 现在即将出现的输出: “工作时间”:[ { “开幕式”:“09:30”, “结束”:“13:30”, “dayName”:“星期日” }, { "0": { “from_time”:“06:13:16”, “to_时间”:“04:14:11”, “折扣”:“20”, “dayName”:“星期一” }, "1": { “from_time”:“06:59:16”, “to_时间”:“04:19:11”, “折扣”:“20”, “dayName”:“星期一” }, “开场白”:“开场白”, “结案”:“, “dayName”:“星期一” }, { "0": { “from_time”:“05:10:15”, “to_时间”:“06:10:17”, “折扣”:“20”, “dayName”:“星期二” }, “开场白”:“开场白”, “结案”:“, “dayName”:“星期二” }, { "0": { “开始时间”:“13:00:00”, “to_时间”:“14:50:00”, “折扣”:“20”, “dayName”:“星期三” }, “开幕式”:“10:30”, “结束”:“06:30”, “dayName”:“星期三” }, { “开幕式”:“01:00”, “结束”:“08:00”, “dayName”:“星期四” }, { “开场白”:“开场白”, “结案”:“, “dayName”:“星期五” }, { “开场白”:“开场白”, “结案”:“, “dayName”:“星期六” } ], 这是我的密码:

foreach ($returnDataAns['workingHours'] as $key => $value) { # code... foreach ($returnDataAns['discount'] as $key2 => $value2) { # code... if ($value['dayName'] == $value2['dayName']) { # code... array_push($returnDataAns['workingHours'][$key], $value2); } } } foreach($returnDataAns['workingHours']作为$key=>$value){ #代码。。。 foreach($returnDataAns['discount']作为$key2=>$value2){ #代码。。。 如果($value['dayName']=$value2['dayName']){ #代码。。。 数组推送($returnDataAns['workingHours'][$key],$value2); } } }
知道我该怎么做吗?我只想拿掉那些0:1:keys

这将获得所需的输出

$arr1 = json_decode('[
        {
            "opening": "09:30",
            "closing": "13:30",
            "dayName": "sunday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "monday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "tuesday"
        },
        {
            "opening": "10:30",
            "closing": "06:30",
            "dayName": "wednesday"
        },
        {
            "opening": "01:00",
            "closing": "08:00",
            "dayName": "thursday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "friday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "saturday"
        }
    ]', true);

$arr2 = json_decode('[
        {
            "from_time": "13:00:00",
            "to_time": "14:50:00",
            "discount": "20",
            "dayName": "wednesday"
        },
        {
            "from_time": "06:13:16",
            "to_time": "04:14:11",
            "discount": "20",
            "dayName": "monday"
        },
        {
            "from_time": "05:10:15",
            "to_time": "06:10:17",
            "discount": "20",
            "dayName": "tuesday"
        },
        {
            "from_time": "06:59:16",
            "to_time": "04:19:11",
            "discount": "20",
            "dayName": "monday"
        }
    ]', true);

$finalArray = [];
foreach ($arr1 as $key => $day) {
    $subArray = [];
    foreach ($arr2 as $key2 => $dayData) {
        if ($day['dayName'] === $dayData['dayName']) {
            $subArray[] = $dayData;
        }
    }
    $finalArray[$key] = !empty($subArray) ? $finalArray[$key] = [$day, $subArray] : [$day];
}

echo '<pre>';
echo '$finalArray ' . print_r($finalArray, true);
echo '</pre>';
echo '<pre>';
echo '$finalArray json_encoded ' . print_r(json_encode($finalArray), true);
echo '</pre>';
exit;

我认为这将为您提供预期的输出。
我使用array\u combine和array\u列使第一个数组关联。
第二个数组必须循环以创建可以与第一个数组合并的数组

最后,我使用数组_值删除关联


当你说不工作时,什么是不工作的?你试过什么吗?嗨,欢迎来到SO。我建议你花一点时间阅读这一页。本网站有一些规则,有助于提高内容质量,使问题更容易回答。在您的情况下,您应该在问题本身中包含您解决/搜索问题解决方案的尝试,因为要求为您编写代码的问题在网站上被视为离题。祝你好运实际上,我为两个数组做了一个foreach循环,然后比较了它的dayName值,如果匹配,然后将第二个数组的值推到第一个数组中。问题已编辑。我看到了您的编辑 foreach ($returnDataAns['workingHours'] as $key => $value) { # code... foreach ($returnDataAns['discount'] as $key2 => $value2) { # code... if ($value['dayName'] == $value2['dayName']) { # code... array_push($returnDataAns['workingHours'][$key], $value2); } } }
$arr1 = json_decode('[
        {
            "opening": "09:30",
            "closing": "13:30",
            "dayName": "sunday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "monday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "tuesday"
        },
        {
            "opening": "10:30",
            "closing": "06:30",
            "dayName": "wednesday"
        },
        {
            "opening": "01:00",
            "closing": "08:00",
            "dayName": "thursday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "friday"
        },
        {
            "opening": "",
            "closing": "",
            "dayName": "saturday"
        }
    ]', true);

$arr2 = json_decode('[
        {
            "from_time": "13:00:00",
            "to_time": "14:50:00",
            "discount": "20",
            "dayName": "wednesday"
        },
        {
            "from_time": "06:13:16",
            "to_time": "04:14:11",
            "discount": "20",
            "dayName": "monday"
        },
        {
            "from_time": "05:10:15",
            "to_time": "06:10:17",
            "discount": "20",
            "dayName": "tuesday"
        },
        {
            "from_time": "06:59:16",
            "to_time": "04:19:11",
            "discount": "20",
            "dayName": "monday"
        }
    ]', true);

$finalArray = [];
foreach ($arr1 as $key => $day) {
    $subArray = [];
    foreach ($arr2 as $key2 => $dayData) {
        if ($day['dayName'] === $dayData['dayName']) {
            $subArray[] = $dayData;
        }
    }
    $finalArray[$key] = !empty($subArray) ? $finalArray[$key] = [$day, $subArray] : [$day];
}

echo '<pre>';
echo '$finalArray ' . print_r($finalArray, true);
echo '</pre>';
echo '<pre>';
echo '$finalArray json_encoded ' . print_r(json_encode($finalArray), true);
echo '</pre>';
exit;
[  
   [  
      {  
         "opening":"09:30",
         "closing":"13:30",
         "dayName":"sunday"
      }
   ],
   [  
      {  
         "opening":"",
         "closing":"",
         "dayName":"monday"
      },
      [  
         {  
            "from_time":"06:13:16",
            "to_time":"04:14:11",
            "discount":"20",
            "dayName":"monday"
         },
         {  
            "from_time":"06:59:16",
            "to_time":"04:19:11",
            "discount":"20",
            "dayName":"monday"
         }
      ]
   ],
   [  
      {  
         "opening":"",
         "closing":"",
         "dayName":"tuesday"
      },
      [  
         {  
            "from_time":"05:10:15",
            "to_time":"06:10:17",
            "discount":"20",
            "dayName":"tuesday"
         }
      ]
   ],
   [  
      {  
         "opening":"10:30",
         "closing":"06:30",
         "dayName":"wednesday"
      },
      [  
         {  
            "from_time":"13:00:00",
            "to_time":"14:50:00",
            "discount":"20",
            "dayName":"wednesday"
         }
      ]
   ],
   [  
      {  
         "opening":"01:00",
         "closing":"08:00",
         "dayName":"thursday"
      }
   ],
   [  
      {  
         "opening":"",
         "closing":"",
         "dayName":"friday"
      }
   ],
   [  
      {  
         "opening":"",
         "closing":"",
         "dayName":"saturday"
      }
   ]
]
foreach($discount as $val){
    $discount2[$val['dayName']][] = $val;
}  

$res = array_values(array_merge_recursive(array_combine(array_column($WH, "dayName"), $WH), $discount2));

var_dump($res);