Исключить все 0 из числа foreach

Я хочу обновить все мои custom_field, указав определенный номер для каждого из моих сообщений. Проблема: я не хочу добавлять числа с 0 внутри.

$i = 1; // Start from 1

if ($ajax_query->have_posts()) : 
    while ($ajax_query->have_posts()) : 
        $ajax_query->the_post(); 

        update_post_meta( get_the_ID(), 'the_custom_field', $i++ ); 
        // $i++ will be the specific number for each my post.

    endwhile;
endif;

Теперь в моем сообщении 1 есть the_custom_field 1, в моем сообщении 2 есть the_custom_field 2.... в моем сообщении 10 есть the_custom_field 10.

Но должно быть так:

  • the_custom_field поста 1 должно быть 1
  • the_custom_field поста2 должно быть 2
  • the_custom_field сообщения 3 должно быть 3
  • ...
  • the_custom_field сообщения 10 должно быть 11
  • the_custom_field поста 11 должно быть 12 так далее

Как это возможно человек?

Dhruv 28.05.2019 15:13

Я думаю, пост 11 будет номером 12.

Mathieu 28.05.2019 15:15

Да, пост 11 будет 12 и т.д.

Youstart 28.05.2019 15:16

Итак, проверьте, содержит ли идентификатор сообщения символ 0, и если да, добавьте еще один в $i? «Это должно отложить остальные» — как «отложить»? Вы просто имеете в виду, что хотите вообще не обновлять посты 10, 20, …?

04FS 28.05.2019 15:17

Я отредактировал вопрос. Отложить, возможно, было не лучшим словом.

Youstart 28.05.2019 15:19
if ( strpos( (string)get_the_ID(), '0' ) !== false )
04FS 28.05.2019 15:21

Используйте цикл while.

nice_dev 28.05.2019 15:22

@04FS Я не хочу проверять идентификатор сообщения. Все сообщения должны быть обновлены с номером. Я просто не хочу добавлять число с 0 внутри. Если $i++ имеет ноль, то не обновляйте это конкретное число, а добавляйте следующее число, у которого нет 0

Youstart 28.05.2019 15:31

Преобразуйте идентификатор в основание 9, используя base_convert($id, 10, 9), затем добавьте 1 к каждому символу в результирующей строке.

Phylogenesis 28.05.2019 15:36
Стоит ли изучать 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
9
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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


if ($ajax_query->have_posts()) : 
    while ($ajax_query->have_posts()) : 
        $ajax_query->the_post(); 

        update_post_meta( get_the_ID(), 'the_custom_field', $i++); 
        while (strpos(strval($i),'0') !== false):
            $i++;
        endwhile;

    endwhile;
endif;

Что ж, как только мы назначаем идентификатор, мы запускаем цикл while до тех пор, пока не получим значение, которое не содержит 0.

Логика - это то, что я хочу, но она не работает, она продолжает загружаться

Youstart 28.05.2019 15:37

@Youstart Естественно, потому что это метод грубой силы. Похоже, вы обновляете много строк, но не могли бы вы сообщить мне, почему такое требование?

nice_dev 28.05.2019 15:39

Я не уверен, потому что у меня около 60 сообщений, и если я обновлю свои сообщения (с обычным $i), это займет меньше секунды. Я мог бы вручную добавить свое поле custom_post_field, но пытался найти более быстрый способ на будущее.

Youstart 28.05.2019 15:42

@Youstart Я внес изменения в свой код. Теперь все должно работать нормально.

nice_dev 28.05.2019 15:56

@Youstart Рад помочь :). Но обратите внимание, что это может замедляться при большом количестве строк из-за самих вычислений, а также из-за запроса к БД, запускаемого каждый раз в цикле.

nice_dev 28.05.2019 16:00

Да, конечно, мне нужно будет делать это время от времени, а не каждый день. Спасибо

Youstart 28.05.2019 16:01

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