Как правильно сделать foreach?

81
07 апреля 2021, 04:00

Сразу извиняюсь если вопрос глупый, возможно я не так гуглил.

У меня есть комментарии в БД.

comments ->

-> id (уник. id комментария)

--> page_id (страницы на которой был оставлен комментарий)

--> text_comment (текст комментария)

Я вывожу комментарии следующим образом:

  <?php
  $result = $connection->query("SELECT * FROM `films` WHERE `id` = " . (int) $_GET['id']);
  $rows = $result->fetch_assoc();
  $page_id = $rows['id']; // уникальный id фильма
    $mysqli = new mysqli("localhost", "root", "123", "db");// Подключается к базе данных
    $result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id'"); //Вытаскиваем все комментарии для данной страницы
    while ($rows = $result_set->fetch_assoc()) {
      print_r($rows); //Вывод комментариев
      echo "<br>";
    }
  ?>

Выводятся данные массива:

 Array ( [id] => 1 [page_id] => 1 [text_comment] => ппц. напишут тупой вопрос) 
Array ( [id] => 2 [page_id] => 1 [text_comment] => тебя в гугле забанили? ) 

Мне нужно, чтобы данные выводились просто комментариями, просто текстом, без всяких array => и прочего.

Я знаю, что перебрать массив нужно с помощью foreach или for.

Но допустим я делаю:

$rows = $result_set->fetch_assoc();
  for ($i=0; $i < count($rows) ; $i++) {
    echo $rows;
  }

И выводиться ArrayArrayArray учитывая то, что на данный момент у меня 2 комментария, хотя бы просто ArrayArray выводилось бы...

Answer 1

Выборка комментариев из БД:

<?php
$comments = [];
$query = "SELECT * FROM ...";
if ($result = $mysqli->query($query)) {
  /* извлечение ассоциативного массива */
  while ($row = $result->fetch_assoc()) {
    $comments[] = $row;
  }
  /* удаление выборки */
  $result->free();
}
/* Использование итераторов (поддержка была добавлена начиная с PHP 5.4) */
// foreach ($result = $mysqli->query($query) as $row ) {
//   $comments[] = $row;
// }
?>

Вывод комментариев:

<?php if (empty($comments)): ?>
  <p>Комментариев нет.</p>
<?php else: ?>
  <ul>
    <?php foreach ($comments as $comment): ?>
      <li>
        <?= $comment['text_comment'] ?>
      </li>
    <?php endforeach; ?>
  </ul>
<?php endif; ?>
READ ALSO
Обход последнего прохода цикла php

Обход последнего прохода цикла php

Вот примерная схема цикла:

97
Не получается передать объекты в массив

Не получается передать объекты в массив

Почему нельзя передать объекты в массив подобным образом?

82
Разница между Collections.sort() и сортировкой стримом

Разница между Collections.sort() и сортировкой стримом

Я пишу программу, которая выстраивает пирамиду из отсортированных чисел и возвращает двумерный массив

88
Room Database сложный фильтр для выборки

Room Database сложный фильтр для выборки

Всем привет! Ищу помощь у тех, кто сталкивался с подобной задачей или у тех, кто знает, как ее решить

144