Encoderast
@Encoderast
frontend пытается что-то делать в backend

Как подключить функцию PHP foreach в отдельный файл?

Есть функция, которую я вставляю на страницу index.php

Значения, получаемые из бд: 1, 2, 3 (через запятую - массив)

// $product - данные,  пришедшие из БД.
    $parsed  = explode(',',  $product['delivery']);
    foreach($parsed as $one) {
        if ($one == 0) {
            $result[] = ''; 
        } else
        if ($one == 1) {
            $result[] = '<span class="selection">Значение 1</span>'; 
        } else
        if ($one == 2) {
            $result[] = '<span class="selection">Значение 2</span>'; 
        } else
        if ($one == 3) {
            $result[] = '<span class="selection">Значение 3</span>'; 
        }
    }


и вставка результата на эту же страницу после обработки

<?php if ($product['delivery']): ?>
      <label> Доставка: </label> 
      <?php echo implode('<br>',  $result); ?>
<?php endif; ?>


Как вывести эту функцию в отдельный файл и чтоб <span> </span> остался на странице index.php, чтоб в обработчике обрабатывались и получались только значения:
Сейчас: <span class="selection">Значение 1</span>
Нужно: Значение 1

Пробовал подключать следующим образом:
<?php echo Product::getDeliveryText($product['delivery']); ?>

но тут выведет все в одну строчку, а собственно где подставлять <span> </span> , тут нужен еще один foreach ?

11 дней знаний php не хватает чтоб осуществить
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
@MadridianFox
Web-программист, многостаночник
function getDeliveryArr(){
    return explode(",", $product['delivery']);
}

$items = getDeliveryArr();
?>
<?if(count($items)):?>
    <label>Доставка:</label>
    <?foreach($items as $item):?>
        <span> Значение <?=$item?> </span>
    <?endforeach?>
<?else:?>
    <b>Список пуст</b>
<?endif?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
orlov0562
@orlov0562 Куратор тега PHP
I'm cool!
Прочитай про функции:
function renderProductDelivery($productItems) {
       $html = '';
       // логика рендеринга $product['delivery']
      return $html;
}


ну и в нужном месте:
<?php if ($product['delivery']): ?>
      <label> Доставка: </label> 
      <?=renderProductDelivery($product['delivery']) ?>
<?php endif; ?>


логика думаю понятна: выносишь рендеринг в отдельную функцию, где генерируется и возвращается html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы