За последние 24 часа нас посетили 20466 программистов и 1092 робота. Сейчас ищут 876 программистов ...

Как правильно вывести чётную и нечётную запись?

Тема в разделе "PHP для новичков", создана пользователем ForumMan, 10 сен 2017.

Метки:
  1. ForumMan

    ForumMan Новичок

    С нами с:
    10 сен 2017
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте. Решил посадить вёрстку на wordpress, но столкнулся с проблемой в сфере php.

    Суть в чём. Мне нужно вывести 3 записи, но они отличаются друг от друга. У нечётных картинка слева а текст справа и сероватый bg, а у чётных наоборот.

    Для вывода этих секций я создал кастомную запись, а так же в каждой кастомной записи есть кастомные поля(я использую плагин options tree) и в каждую запись поместил информацию которая должна выводиться в шаблоне.

    Код (Text):
    1. <?php $split = get_post_meta($post->ID, 'fit_list', true); ?>[/php]
    2.  
    3.  В данную переменную у меня попадает ассоциативный массив в котором 3 мои записи.
    4.  
    5. Вот var_dump  переменной $split:
    6.  
    7. [php]array(3) {
    8.   [1]=>
    9.   array(2) {
    10.     ["title"]=>
    11.     string(1) "2"
    12.     ["fit_select"]=>
    13.     string(3) "301"
    14.   }
    15.   [2]=>
    16.   array(2) {
    17.     ["title"]=>
    18.     string(1) "3"
    19.     ["fit_select"]=>
    20.     string(3) "303"
    21.   }
    22.   [0]=>
    23.   array(2) {
    24.     ["title"]=>
    25.     string(1) "1"
    26.     ["fit_select"]=>
    27.     string(3) "305"
    28.   }
    29. }[/php]
    30.  
    31. Далее с помощью foreach я получаю значение массива и вывожу всё это в шаблоне(код будет ниже):
    32.  
    33. [php]<?php foreach ($split as $item) :
    34.     $fit = get_post($item['fit_select'],ARRAY_A);
    35. ?>[/php]
    36.  
    37. Далее я написал для себя вот такую тестовую функцию:
    38.  
    39. [code] <?php  for($i = 0; $i < 3; $i++){ if($i%2 == 0){ echo'_чётное_ '; }else{ echo'*не чётное* '; }}?>
    и она вывела сообщения в нужном мне порядке.

    Но когда я кинул это всё в шаблон то получил не то что хотел. Каждая запись у меня вывелась по 4 раза.

    О_о Я не знаю как исправить это. Я явно ошибся. не получается самостоятельно сделать. Помогите! Я прикрепил картинки как выглядит секция сейчас(это там где 12 записей вывело) и как она должна выглядеть(там где 3).

    Вот полный код секции которую я пытаюсь вывести:
    Код (Text):
    1. <?php $split = get_post_meta($post->ID, 'fit_list', true); ?>
    2.  
    3. <?php foreach ($split as $item) :
    4.     $fit = get_post($item['fit_select'],ARRAY_A);
    5. ?>
    6.  
    7.         <?php for($i = 0; $i <= 3; $i++) :?>
    8.         <?php if($i%2 == 0) : ?>
    9.  
    10.     <div class="split-features">
    11.         <div class="col-md-6 nopadding">
    12.             <div class="split-image"> <img class="img-responsive wow fadeIn" src="<?php echo get_post_meta($fit['ID'], 'split_bg', true)?>" alt="Image" /> </div>
    13.         </div>
    14.         <div class="col-md-6 nopadding">
    15.             <div class="split-content">
    16.                 <h1 class="wow fadeInUp"><?php echo $fit['post_title'] ?> </h1>
    17.                 <p class="wow fadeInUp"><?php echo $fit['post_content'] ?> </p>
    18.                 <ul class="wow fadeInUp">
    19.                     <?php foreach (get_post_meta($fit['ID'], 'split_list', true) as $list) : ?>
    20.                         <li><?php echo $list['split_title'] ?></li>
    21.                     <?php endforeach; ?>
    22.                 </ul>
    23.             </div>
    24.         </div>
    25.     </div>
    26.  
    27.     <?php else : ?>
    28.  
    29.     <div class="split-features2">
    30.         <div class="col-md-6 nopadding">
    31.             <div class="split-content second">
    32.                 <h1 class="wow fadeInUp"><?php echo $fit['post_title'] ?></h1>
    33.                 <p class="wow fadeInUp"> <?php echo $fit['post_content'] ?> </p>
    34.                 <ul class="wow fadeInUp">
    35.                     <?php foreach (get_post_meta($fit['ID'], 'split_list', true) as $list) : ?>
    36.                         <li><?php echo $list['split_title'] ?></li>
    37.                     <?php endforeach; ?>
    38.                 </ul>
    39.             </div>
    40.         </div>
    41.         <div class="col-md-6 nopadding">
    42.             <div class="split-image"> <img class="img-responsive wow fadeIn" src="<?php echo get_post_meta($fit['ID'], 'split_bg', true)?>" alt="Image" /> </div>
    43.         </div>
    44.     </div>
    45.  
    46.     <?php endif; ?>
    47. <?php endfor; ?>
    48.  
    49. <?php endforeach; ?>



     

    Вложения:

  2. ForumMan

    ForumMan Новичок

    С нами с:
    10 сен 2017
    Сообщения:
    4
    Симпатии:
    0
    Извините. Я что прокаженный? 840 просмотров и никто не помог!!! Помогите!!!
     
  3. ForumMan

    ForumMan Новичок

    С нами с:
    10 сен 2017
    Сообщения:
    4
    Симпатии:
    0
    ВОПРОС РЕШЕН. ТЕМУ МОЖНО ЗАКРЫТЬ ИЛИ ДАЖЕ УЖАЛИТЬ
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    че за? откуда 1600 просмотров уже? о_О
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @igordata это популярный запрос, думаю с поиска люди приходили и новички прочитав название темы, так как вещь нужная и многие могут не знать как такое сделать.

    https://secure.php.net/manual/ru/language.operators.arithmetic.php#70424 комментарию 10 лет

    Чётное не чётное
    PHP:
    1. <?php
    2.   $a = 8;
    3.   if (($a % 2) == 1)
    4.   { echo "$a is odd." ;}
    5.   if (($a % 2) == 0)
    6.   { echo "$a is even." ;}
    --- Добавлено ---
    @ForumMan напиши решение, чтобы другие по возможности воспользовались.
     
    mahmuzar нравится это.
  6. ForumMan

    ForumMan Новичок

    С нами с:
    10 сен 2017
    Сообщения:
    4
    Симпатии:
    0
    Решение моей проблемы =)
    PHP:
    1. $i = 1;
    2. foreach ($split as $item){
    3.  
    4.      if(($i%2) == 0) {
    5.          Выводим чётную секцию
    6.      }    
    7.      else {
    8.         Выводим нечетную секцию
    9.      }      
    10.  
    11. $i++;
    12. }
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    artoodetoo нравится это.