Помощь по PHP

#1 27 мая 2016 в 08:20
Добрый день!

Есть кусок кода:
  1.  
  2. <?php if (in_array($cat_id, $cat_array)) { ?>
  3. <?php if ($attr_show) { ?>
  4. <div class="attribute">
  5. <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
  6. <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
  7. <?php if (in_array($attribute['attribute_id'], $attr_array)) { ?>
  8. <?php if ($attr_name_show) { ?><?php echo $attribute['name']; ?>: <?php } ?><?php echo $attribute['text']; ?> / <?php } ?>
  9. <?php } ?>
  10. <?php } ?>
  11. <?php } ?>
  12. <?php } ?>
  13. <?php } ?>
  14.  
Он отвечает за вывод атрибутов товаров. Атрибуты выводятся в одной строке таблицы, через запятую т.е "Название атрибута/значение, название атрибута/значение" и т.д.

Как можно сделать, чтобы каждый атрибут выводился в отдельном столбце, а его значения в строках этого столбца?
#2 27 мая 2016 в 08:40
Вы меня, конечно, извините, но такого кривого кода давно не видел)))

Кроме того, баланса скобок в этом фрагменте нет. И отсутствует закрывающий тег </div>. Позволил себе переписать ваш фрагмент так:
  1. <?php
  2. if(in_array($cat_id, $cat_array)){
  3. if($attr_show){
  4. echo '<div class="attribute">';
  5. foreach($product['attribute_groups'] as $attribute_group) {
  6. foreach ($attribute_group['attribute'] as $attribute) {
  7. if (in_array($attribute['attribute_id'], $attr_array)) {
  8. if ($attr_name_show) {
  9. echo $attribute['name'].' :';
  10. }
  11. echo $attribute['text'].' </br>';
  12. }
  13. }
  14. }
  15. echo '</div>';
  16. }
  17. }
  18. ?>
В этом фрагменте баланс скобок соблюден, вставлен замыкающий див, введен тег переноса строки, выкинуты лишние теги <?php ?>.
#3 27 мая 2016 в 08:44
Странник, Я же написал, это "кусок", там просто слишком длинная портянка, поэтому скопировал только главное.

P.S. Код не мой. 😊
#4 27 мая 2016 в 08:48
Ну, так поздравте автора кода с криворукостью, чо там))
Поскольку я баланс скобок изменил, проследите за балансом, когда будете вставлять мой фрагмент себе. Возможно, замыкающий див тогда придется выкинуть тоже — если он у вас в другом месте.
#5 27 мая 2016 в 09:03
Странник, хорошо, спасибо! smile
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.