Преобразование многомерного массива с неизвестным количеством массивов в один массив - PullRequest
0 голосов
/ 01 ноября 2019

Я немного новичок в массивах и получил серьезные ошибки по этому поводу. поэтому я надеюсь, что кто-то может помочь:)

У меня есть пользователь, чтобы ввести часы работы своих магазинов через форму, в конце концов, я получаю массив значений. Я не знаю, сколько массивов на самом деле создается, как это контролируется пользователем, я знаю, что это будет где-то между 3 и 9.

Массив, с которым я заканчиваю, выглядит примерно так:

Array ( 
[opening_hours_start] => Array ( 
[0] => 18:30 
[1] => 18:30 
[2] => 09:00 ) 
[opening_hours_end] => Array ( 
[0] => 22:00 
[1] => 23:00 
[2] => 18:00 ) 
[weekday] => Array ( 
[0] => 1 
[1] => 2 
[2] => 3 
[3] => 5 ) 
[weekday2] => Array ( 
[0] => 4 ) 
[weekday3] => Array ( 
[0] => 6 
[1] => 7 ) 
)

То, что я хочу закончить, будет примерно таким:

Array(
[1] => Array (
[start] => 18:30
[end] => 22:00)
[2] => Array (
[start] => 18:30
[end] => 22:00)

etc.

)
)

Здесь есть какие-нибудь маги, которые могли бы помочь мне?

Ответы [ 2 ]

1 голос
/ 01 ноября 2019

Сделай так, Демо

$result = array_map(function($start,$end){
    return array(
        "start"=>$start,
        "end"=>$end
    );
},$array["opening_hours_start"],$array["opening_hours_end"]);
print_r($result);
0 голосов
/ 04 ноября 2019

хорошо, вот как я решил это в конце:

  $opening_hours = $original_array;
  $opening_hours_start = $opening_hours['opening_hours_start'];
  $opening_hours_end = $opening_hours['opening_hours_end'];

  unset($opening_hours['opening_hours_start']);
  unset($opening_hours['opening_hours_end']);

  $weekdays_array = $opening_hours;

  $array = array();

  $i = 0;

  foreach ($weekdays_array as $weekday_set => $weekdays) {

    foreach($weekdays as $weekday) {

      $data = [
        'weekday' => $weekday,
        'start' => $opening_hours_start[$i], 
        'end' => $opening_hours_end[$i]];

      array_push($array, $data);

    }
    $i++;
  }
...