При назначении нового массива из существующего массива php показывает только последнее значение массива

0

У меня здесь небольшая проблема. У меня есть следующий код, который я создаю поисковый запрос, и я пытаюсь взять массив "$ row" и создать новый массив с именем "$ item", чтобы я мог повторять значения внутри моего оператора div. Этот код работает, и я делаю эхо массив $ item со значениями 'follower_username', но только последнее значение получает эхо. У меня есть значения внутри моей базы данных Nathan, Brett, Nathan2, и это только перекликается с Nathan2 или последним значением массива $ item.

Вот мой код:

 $result = mysqli_query($con,"SELECT * FROM followers
WHERE username='$username'");
?>

<?php

while ($row = mysqli_fetch_array($result))

  {
 $item = $row;

}


?>


<body>
<div id="contentwrap">
    <div rel="scrollcontent2">
       <?php echo $item['follower_username'];?> <img style="width: 50px; height: auto;"<?php echo '<img src="/user_photo/' . $item['follower_username'] . '.jpeg" />';?>
</div>

Надеюсь, я смогу это решить, это меня повредит! Спасибо за любую помощь!!

  • 0
    Вам нужно поместить строку эхо-элемента в цикл while
Теги:
arrays
echo

2 ответа

0
Лучший ответ

То, что вы делаете, переназначает значение элемента в текущей строке каждый раз.

$ row будет объектом значений строки таблицы из результирующего запроса, поэтому, если вы хотите, чтобы все строки в переменной $ item должны были быть массивом для хранения каждого результата, вместо сохранения текущей строки в той же переменной для каждого ряд.

Затем вам нужно будет перебрать этот массив для отображения каждого результата.

$i = 0;
$item = array();

while ($row = mysqli_fetch_array($result))
{
  $item[$i] = $row;
  $i++;
}

<div>
  <?php 
    foreach ($item as $value)
    {
       echo $value['follower_username'];
    }
  ?>
</div>

Ниже приведен пример, чтобы показать некоторые сокращенные версии одной и той же идеи: $ item = array();

while ($row = mysqli_fetch_array($result))
{
  $item[] = $row;
}

<div>
  <ul>
  <?php foreach ($item as $value): ?>
    <li><?php echo $value['follower_username']; ?></li>
  <?php endforeach; ?>
  </ul>
</div>
  • 0
    Спасибо всем! Я наконец получил это с вашим кодом. Но доработано под мои нужды немного. Это работает хорошо. Спасибо!
  • 0
    Нет проблем. Рад, что смог помочь.
0

while ($ row = mysqli_fetch_array ($ result))

То, что это делает, это захватить следующую строку в результирующем наборе и назначить ее переменной $row. Каждый раз, когда цикл работает, он присваивает последней строке значение $item. Таким образом, чтобы сохранить весь набор результатов, используйте

$item[] = $row.

Я уверен, что вы пытаетесь выполнить с нашей следующей строкой кода. Чтобы показать все предметы, вам нужно что-то вроде

foreach($item as $singleItem)
{
echo $singleItem['follower_username']."<br>";
  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню