Foreach l oop возвращает только последний результат - PullRequest
1 голос
/ 20 января 2020

Мне нужно отформатировать дату ГГГГ-ММ-ДД для вывода наподобие «12 января 2020 года», у меня есть дата для правильного вывода, но код выведет только одно из пяти значений, которые мне нужны. явно что-то пропустил.

У меня проблема, когда следующий код выводит только один результат:

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);

Код выводит все пять значений (хотя в формате даты ГГГГ-ММ-ДД), что мне не хватает? Я новичок, когда дело доходит до PHP.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 20 января 2020

Вы забыли добавить {} в ваш foreach l oop

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;
    }
}
0 голосов
/ 20 января 2020

Вы пропустили фигурные скобки {} в foreach.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...