首页 > 解决方案 > Foreach 循环仅返回最后一个结果

问题描述

我需要格式化一个 YYYY-MM-DD 日期以输出“2020 年 1 月 12 日”,我已经得到正确输出的日期,但代码只会输出我想要的五个值之一,我显然错过了一些东西.

我遇到以下代码仅输出单个结果的问题:

function populate_dropdown($form){

    //Reading posts for "Events" post type;
    $posts = get_posts("post_type=el_events&orderby=date&order=asc&el_eventcategory=flo-talanoa&numberposts=-1");

    //Creating drop down item array.
    $items = array();
    //Adding post dates titles to the items array
    foreach($posts as $post)
        $unformatteddate = $post->startdate;
        $dateTime = DateTime::createFromFormat("Y-m-d", $unformatteddate);
        $dateformatted = $dateTime->format('j F Y');
        $items[] = array(
            "value" =>  $dateformatted . ': ' . $post->location, 
            "text" => $dateformatted . ': ' . $post->location
        );

    //Adding items to field id 1.
    foreach($form["fields"] as &$field)
        if($field["id"] == 1){
            $field["type"] = "select";
            $field["choices"] = $items;
        }

    return $form;
}

如果我更换:

            $unformatteddate = $post->startdate;
            $dateTime = DateTime::createFromFormat("Y-m-d", $unformatteddate);
            $dateformatted = $dateTime->format('j F Y');
            $items[] = array(
                "value" =>  $dateformatted . ': ' . $post->location, 
                "text" => $dateformatted . ': ' . $post->location
            );

和:

$items[] = array("value" => $post->startdate . ': ' . $post->location, "text" => $post->startdate . ': ' . $post->location);

该代码输出所有五个值(尽管使用 YYYY-MM-DD 日期格式),我错过了什么?我是 PHP 新手。

提前致谢

标签: phpwordpressforeach

解决方案


您忘记{}foreach循环中添加

foreach($posts as $post){
    $unformatteddate = $post->startdate;
    $dateTime = DateTime::createFromFormat("Y-m-d", $unformatteddate);
    $dateformatted = $dateTime->format('j F Y');
    $items[] = array(
        "value" =>  $dateformatted . ': ' . $post->location, 
        "text" => $dateformatted . ': ' . $post->location
    );
}

//Adding items to field id 1.
foreach($form["fields"] as &$field){
    if($field["id"] == 1){
        $field["type"] = "select";
        $field["choices"] = $items;
    }
}

推荐阅读