Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Разбиение новости по три

Сообщения:  [1-10]    [11-20]  [21-24] 

 
 автор: Electron   (25.11.2014 в 13:53)   письмо автору
 
   для: confirm   (25.11.2014 в 13:49)
 

Хм, огромное спасибо за помощь и объяснения, кажется то что нужно и с минимальным кодом! А то перелопачивать всю "кучу грязи" не хочется, сейчас буду проверять)

Да, всё работает идеально!

Собственно вот результат выполнения)

Ещё раз спасибо :)

  Ответить  
 
 автор: confirm   (25.11.2014 в 13:49)   письмо автору
 
   для: Electron   (25.11.2014 в 13:45)
 

Да.

  Ответить  
 
 автор: Electron   (25.11.2014 в 13:45)   письмо автору
 
   для: confirm   (25.11.2014 в 13:37)
 

Т.е. в итоге получается так?

<ul>
    <li>
        <?$i 0;?>
        <?foreach($arResult["ITEMS"] as $arItem):?>
            <?if($i && !($i 3)):?> 
    </li>
    <li> 
            <?endif?> 
            <a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
                {МНОГО_КОДА}
            </a>
            <?$i++;?>
        <?endforeach;?>
    </li>
</ul>

  Ответить  
 
 автор: confirm   (25.11.2014 в 13:37)   письмо автору
 
   для: Electron   (25.11.2014 в 13:24)
 

Это никак не структура движка, это просто проход в цикле, и именно конструкция, которая в нем применена в данном случае "куча грязи", в которой легко запутаться.

Вне цикла переменная нужна:

<?
$i 
0;

foreach(
$array as $value) {
    if(
$i && !($i 3)) $ul .= '</li><li>'//это означает, что если не первая итерация цикла и пройдено три его итерации, то закрыть/открыть тег LI
    //если использовать конструкцию if-endif, то нужно не $ul .= '</li><li>';, а вывод </li><li> в этой конструкции
    
<?if($i && !($i 3)):?> 
        </li><li> 
    <?endif?>
    //а далее зоопарк МНОГО_КОДА
    //то есть условие проверяющее деление по модулю предваряет каждую итерацию цикла
    $i++; //икремент счетчика итерации, после вывода закрывающего тега А
}

  Ответить  
 
 автор: Electron   (25.11.2014 в 13:24)   письмо автору
 
   для: confirm   (25.11.2014 в 13:22)
 

О том и речь, что зоопарк, плюс не хочется менять структуру движка... Я реально запутаюсь и накосячу пока всю "середину" буду переделывать... Если не сложно, поясните, пожалуйста, про определение вне цикла переменной итераций, и её деления на 3, увеличивая в цикле на 1... :)

Даже так не получается обратиться к элементам массива (выводится Array):
<ul>
    <li>
        <?for($i=0$k=count($arResult["ITEMS"]); $i<$k$i++):?>
            <?if($i && !($i 3)):?>
    </li>
    <li>
            <?endif;?>
            <a href="3"><?=$arResult["ITEMS"][$i]?></a>
        <?endfor;?>
    </li>
</ul>

  Ответить  
 
 автор: confirm   (25.11.2014 в 13:22)   письмо автору
 
   для: Electron   (25.11.2014 в 13:09)
 

Проблема не в foreach или for как таковом, а в том, что вы не понимаете сути работы этого кода.

Выбрасывайте к чертовой матери foreach, не удобен он для данного случая, а тем более в конструкции <?foreach():?> <?endforeach;?>. А также вот эту хрень <?if():?> <?endif;?> по той же самой причине.

Пишите так как я написал - "клейте строку", потом ее выведите. Обращаться к элементам массива в цикле for, это $arResult[$i]['key_name'].

{МНОГО_КОДА} - эту часть нужно прописывать вместо $ul .= '<div>' . $a[$i] . '</div>'; в моем примере. Правда там такой зоопарк...

  Ответить  
 
 автор: Electron   (25.11.2014 в 13:09)   письмо автору
 
   для: confirm   (25.11.2014 в 13:05)
 

foreach нужен для всего внутреннего хлама и сохранения однотипности структуры движка) Мм, а примерчик можно?) Вот модернизированный (для упрощения) твой код:

<?$a = array(1,2,3,4,5,6,7);?>
<ul>
    <li>
        <?for($i=0$k=count($a); $i<$k$i++):?>
            <?if($i && !($i 3)):?>
    </li>
    <li>
            <?endif;?>
            <a href="3"><?=$a[$i]?></a>
        <?endfor;?>
    </li>
</ul>


Нужно как-то впихнуть сюда, не задевая {МНОГО_КОДА}:
<ul>
    <li>
        <?foreach($arResult["ITEMS"] as $arItem):?>
            <a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
                {МНОГО_КОДА}
            </a>
        <?endforeach;?>
    </li>
</ul>


Просто не совсем понял про определение вне цикла переменной итераций, и её деления на 3, увеличивая в цикле на 1...

  Ответить  
 
 автор: confirm   (25.11.2014 в 13:05)   письмо автору
 
   для: Electron   (25.11.2014 в 12:53)
 

Зачем вам foreach причем в таком использовании <?foreach($arResult["ITEMS"] as $arItem):?> ?

<?if(count($arItem) % 3):?> - это вообще глупость, итерацию цикла надо делить по модулю, а не количество элементов массива. Именно определяет, что прошло три итерации цикла и нужно закрыть элемент LI, открыв новый. А вы что пишите?

Хотите foreach, значит определите вне цикла переменную итераций, делите ее по модулю 3, увеличивая ее в цикле на 1 (инкремент).

  Ответить  
 
 автор: Electron   (25.11.2014 в 12:53)   письмо автору
 
   для: confirm   (25.11.2014 в 12:18)
 

Блин я слишком туп для этого))) Как мне оставить цикл foreach, сделав разбиение циклом for внутри данного?) По логике должно быть вообще что-то вроде этого:

<ul>
    <li>
        <?foreach($arResult["ITEMS"] as $arItem):?>
            <?if(count($arItem) % 3):?>
                <a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
                    {МНОГО_КОДА}
                </a>
    </li>
    <li>
            <?else:?>
                <a class="news-item" href="<?=$arItem["DETAIL_PAGE_URL"]?>">
                    {МНОГО_КОДА}
                </a>
            <?endif;?>
        <?endforeach;?>
    </li>
</ul>


Весь остальной мусор я думаю вообще не нужно трогать) Может ты сможешь добить? Заранее спасибо! :)

  Ответить  
 
 автор: Electron   (25.11.2014 в 12:20)   письмо автору
 
   для: confirm   (25.11.2014 в 12:18)
 

Собственно наверное это и нужно, большое спасибо за помощь, попытаюсь сейчас разобраться!

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-24] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования