HTML в цикле PHP foreach

Я новичок в PHP. У меня есть функция, которая возвращает HTML-код другой моей функции. Этот HTML-код также содержит некоторый PHP-код. Проблема в том, что я не знаю, как добавить цикл for в этот HTML-код, а затем вернуть весь HTML-код.

например вот мой код:

<?php
class Dummy
{
    public static function testing($data)
    {

        return '<div class = "dummy">name:' . $data['name'] . '</div>';


    }
}
?> 

Я хочу вставить в него, например, цикл foreach

<?php
    class Dummy
    {
        public static function testing($data)
        {

            return '<div class = "dummy">name:' . $data['name'] . '</div>
  <table>
      foreach($data as $d){
        <tr><td>hello</tr></td>
  }
            <table>

';


        }
    }
    ?> 

ну, мой вопрос в том, как я могу добавить цикл for в HTML-код, который встроен в PHP-код и не имеет ничего общего с классами

mynameisbutt 19.03.2018 11:45

К сожалению, я не заметил, что во втором классе есть foreach. Форматирование делает его похожим на HTML, и я его полностью отключил!

IsThisJavascript 19.03.2018 11:46
foreach() не является клиентским, и вы не можете передать его в виде строки.
Rotimi 19.03.2018 11:50

@IsThisJavascript не беспокойтесь. хотя спасибо за ваше время

mynameisbutt 19.03.2018 11:56
Стоит ли изучать 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 и хотите разрабатывать...
2
4
591
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Вам нужно сначала построить строку с желаемым результатом. Затем верните эту строку

<?php
    class Dummy
    {
        public static function testing($data)
        {

          $str = '<div class = "dummy">name:' . $data['name'] . '</div>
  <table>';

            foreach($data as $d){
                 $str .= '<tr><td>hello</td></tr>';
            }
          $str .= '</table>';
          return $str;



        }
    }
    ?> 

Обновите закрывающий тег для tr и table @B. Десаи

Abdul 19.03.2018 11:48

Я не вижу смысла foreach(). $d не используется

Rotimi 19.03.2018 11:53

Я только что предоставил запрошенную демонстрацию OP. Может быть, он знает, как обновить его позже, чтобы использовать переменные foreach. @ Akintunde007

B. Desai 19.03.2018 11:54

Рад помочь @mynameisbutt

B. Desai 19.03.2018 11:58

У вас не может быть цикла for в таком операторе возврата. Вы должны создать переменную для хранения строки и создать ее внутри цикла, как в этом примере:

public static function testing($data) {
    $html = '<div class = "dummy">name:' . $data['name'] . '</div>';
    $html .= '<table>';
    foreach($data as $d){
        $html .= '<tr><td>hello</td></tr>';
    }
    $html .= '<table>';
    return $html;
}

Однако я хотел бы отметить, что создание такого HTML-кода, как правило, является плохой идеей, и вам следует использовать язык шаблонов, который предоставляется в большинстве фреймворков.

В PHP синтаксис .= - это сокращение для конкатенации строки. Вы также можете использовать $html = $html . '<p>some other content</p>';.

Большое спасибо за подробный ответ.

mynameisbutt 19.03.2018 11:55

создать перед возвращением

        <?php
    class Dummy
    {
        public static function testing($data)
        {
            $return='<div class = "dummy">name:' . $data['name'] . '</div><table>';
            foreach($data as $d){
                $return+='<tr><td>hello</td></tr>';
            }
            $return+='<table>';

            return $return;


        }
    }
    ?> 

Например, это можно сделать так.

<?php
        class Dummy
        {
            public static function testing($data, $x)
            {
                      $firstLine = '<div class = "dummy">X Value:' . $x . '</div>';
                      $firstLine .= '<div>';
                      $innerHtml = '';
                      foreach($data as $d) {
                            $innerHtml  .=    '<tr><td>hello '.$d['name'].'</td></tr>';      
                      }
                      $innerHtml = '<table>'.$innerHtml.'</table>';
                      $lastLine = "</div>";   
                      return  $firstLine.$innerHtml.$lastLine;

            }
        }

    $data[0]['name'] = "Nishant";
    $data[1]['name'] = "Amit";
    $data[2]['name'] = "Rachit";

    echo Dummy::testing($data, "This is X Value");
     ?>

Я думаю, он хотел знать, как он может создавать динамический HTML-контент в цикле foreach и возвращать его. То же самое сделал я. Я взял разные переменные и объединил их, чтобы он мог лучше понять.

Nishant 19.03.2018 11:56

как вы думаете, вы даете более ясное объяснение своему коду?

Nawin 19.03.2018 11:57

Да, можно сказать, что я не давал объяснений :) Но Вопросник спросил то же самое.

Nishant 19.03.2018 12:01

Нет никаких объяснений того, как код будет работать. Стоит добавить объяснение, когда вы добавляете лишние строки по сравнению с тем, что спросил спрашивающий!

Abdul 22.03.2018 20:39

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