Показать сообщение, если foreach возвращается пустым

Так что я не могу понять эту логику, поэтому я обращаюсь, чтобы узнать, может ли кто-нибудь помочь мне.

Итак, у меня есть следующее foreach:

echo "Page: " . $page_placement . "/" . $total_pages . "\n\n";
foreach ($posts as $post) {
    $current_post_id = post_exists(
        $post->title->rendered,
        '',
        '',
        '',
        ''
    );
    if ($current_post_id === 0) {
        $my_post = [
            'post_type'     => 'post',
            'post_status'   => 'pending',
            'post_title'    => wp_strip_all_tags($post->title->rendered),
            'post_content'  => wp_strip_all_tags($post->content->rendered),
            'post_excerpt'  => wp_strip_all_tags($post->excerpt->rendered),
            'post_author'   => 1,
            'post_date'     => $post->date,
        ];

        // Insert post.
        $post_id = wp_insert_post($my_post);
        wp_set_object_terms($post_id, 'Global', 'category');
        wp_set_object_terms($post_id, 'Global', 'post_tag');
        echo "ID: " . $post->id . " - Title: " . $post->title->rendered . " has been imported.\n";
    }
}

Он захватывает 50 $posts, а затем выполняет цикл и вызывает post_exists(), чтобы проверить заголовок сообщения, и если он не существует, он импортирует сообщение, иначе пропустит его.


Как я могу отобразить эхо-сообщение, если все 50 сообщений не импортированы?

Я не могу вызвать if (!$current_post_id) { внутри foreach, так как оно отобразит сообщение 50 раз, и я попытался воспроизвести переменную вне foreach, а затем вызвать $my_post[] = [ .... ], но тогда wp_import_post не сработало.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто используйте переменную (например, $imported, начальное значение = 0), чтобы проверить количество. Если импортировано, увеличьте его.

Итак, наконец, если переменная все еще равна 0, вызовите оператор echo

Следовательно:

<?php
echo "Page: " . $page_placement . "/" . $total_pages . "\n\n";

$imported=0;

foreach ($posts as $post) {


    $current_post_id = post_exists(
        $post->title->rendered,
        '',
        '',
        '',
        ''
    );
    if ($current_post_id === 0) {
        $my_post = [
            'post_type'     => 'post',
            'post_status'   => 'pending',
            'post_title'    => wp_strip_all_tags($post->title->rendered),
            'post_content'  => wp_strip_all_tags($post->content->rendered),
            'post_excerpt'  => wp_strip_all_tags($post->excerpt->rendered),
            'post_author'   => 1,
            'post_date'     => $post->date,
        ];

        // Insert post.
        $post_id = wp_insert_post($my_post);
        wp_set_object_terms($post_id, 'Global', 'category');
        wp_set_object_terms($post_id, 'Global', 'post_tag');
        echo "ID: " . $post->id . " - Title: " . $post->title->rendered . " has been imported.\n";
        $imported++;
    }

}

if ($imported==0){
echo "No record imported";
}

Работал отлично! Спасибо @Ken, я не могу одобрить ответ в течение нескольких минут, так что подожду.

user18294188 21.03.2022 04:18

Есть ли способ обработать ошибку Variable '$imported' is probably undefined для оператора if вне foreach?

user18294188 21.03.2022 04:19

Я немного изменил свой ответ - попробуйте мой обновленный ответ

Ken Lee 21.03.2022 04:19

Это доведено до совершенства, еще раз спасибо!

user18294188 21.03.2022 04:23

Хорошо. Хорошего дня и удачного кодирования!

Ken Lee 21.03.2022 06:25

Другие вопросы по теме