Сохраните значение для каждой строки поля повторителя ACF и поместите все значения в один массив (PHP) - PullRequest
0 голосов
/ 03 мая 2018

Я использую WordPress и Расширенные пользовательские поля для создания веб-сайта.

У меня есть поле повторителя Advanced Custom Field для списка событий на моем веб-сайте. Для каждой строки события есть подполе для ввода даты.

Я попытался сохранить эти подполя в массиве $dates. Однако этот массив $dates выводит несколько массивов только с одним значением с var_dump().

Выход $dates:

array(1) { [0]=> string(20) "June 5, 2018 5:00 pm" }
array(1) { [0]=> string(22) "June 15, 2018 12:00 am" }
array(1) { [0]=> string(22) "July 13, 2018 12:00 am" }
array(1) { [0]=> string(22) "July 13, 2018 12:00 am" }
array(1) { [0]=> string(22) "July 27, 2018 12:00 am" }
array(1) { [0]=> string(24) "August 18, 2018 12:00 am" }

С помощью приведенного ниже кода я пытаюсь перебрать массив $dates и преобразовать значения в переменную $month, которая выводит название месяца. Преобразование имени даты в месяц работает, но мне нужно поместить эти значения $month для каждой строки повторителя в один массив $months.

Я попытался создать массив $months ниже и добавить каждое значение $month в этот массив. Этот код выводит отдельные массивы для каждой строки повторителя с одним значением месяца в массиве. (Та же проблема, что и у меня с массивом $dates.)

Я не уверен, как это сделать, или я смотрю на этот вопрос неправильно. Любая помощь будет оценена!

<?php if (have_rows('events')):

while (have_rows('events')) : the_row();

$dates = array();
$dates[] = get_sub_field('date_time');

foreach ($dates as $date) {
  $timestamp = strtotime($date);
  $month = date('F', $timestamp);
  /* this code below does not work as intended */
  $months = array();
  $months[] = $month;
}

?>

1 Ответ

0 голосов
/ 03 мая 2018

Вы сбрасываете массив месяцев в каждом цикле. Просто переместите назначение за пределы вашей петли while.

$months = array();

while (have_rows('events')) : the_row();

    foreach ($dates as $date) {
        $timestamp = strtotime($date);
        $month = date('F', $timestamp);
        $months[] = $month;
    }

endwhile;
...