保存每个ACF转发器字段行的值并将所有值放入一个数组(PHP)

时间:2018-05-03 19:05:24

标签: php arrays wordpress advanced-custom-fields

我正在使用WordPress和高级自定义字段来构建网站。

我的网站上有一个事件列表的高级自定义字段转发器字段。对于每个事件行,都有一个子字段用于输入日期。

我试图将这些子字段保存到$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 :(得分:3)

您在每个循环中重置了month数组。只需将分配移到while循环之外。

$months = array();

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

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

endwhile;