За последние 24 часа нас посетили 54164 программиста и 1721 робот. Сейчас ищут 830 программистов ...

Как правильно вывести массив?

Тема в разделе "PHP для новичков", создана пользователем Sc0r, 21 дек 2020.

Метки:
  1. Sc0r

    Sc0r Новичок

    С нами с:
    21 дек 2020
    Сообщения:
    20
    Симпатии:
    0
    Подскажите, пожалуйста, как правильно вывести данные из массива?
    Примерное, содержание массива:

    id: 1, cid: 1, msg: hello.
    id: 2, cid: 1, msg: hey. how are you doing?
    id: 3, cid: 2, msg: hello from the other side...
    id 4, cid 2, msg: hello :D

    т.е id, cid - группа, и два сообщения в каждой группе.

    Я пытаюсь вывести данные с помощью foreach:

    PHP:
    1. if($row['sender'] == $_SESSION['ID']){
    2.       echo "<div class='item'>";
    3.                echo "<div class='me'>".$row['msg']."</div>";
    4. }
    5. elseif($row['sender'] != $_SESSION['ID']){
    6.                echo "<div class='you'>".$row['msg']."</div>";
    7.       echo "</div>";
    Я хочу вывести сообщения таким образом:
    <div class='item'>
    <div class='me'></div>
    <div class='you'></div>
    </div>

    Все хорошо до тех пор, пока первое условие IF оказывается не верным, и условие пропускается.
    Каким способом можно вывести только те данные, чтобы оба условия выполнились? А та группа, где сообщение начинается с div.you и после div.me - не выводились?

    P.S/ Возможно, что у меня неправильно составлен SQL-запрос, но я уже перепробовал все варианты и прийти к нужному результату не получается. :(
     
    #1 Sc0r, 21 дек 2020
    Последнее редактирование: 21 дек 2020
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Например рассортировать полученные из БД сообщения по разным массивам.
     
    Sc0r нравится это.
  3. Sc0r

    Sc0r Новичок

    С нами с:
    21 дек 2020
    Сообщения:
    20
    Симпатии:
    0
    Спасибо за ответ, вот только, к сожалению, это, наверное, совсем не то, да и как-то сложно это все представляю, так как данные в массиве не статичны и каждый раз будут меняются.
    Мне все больше начинает казаться, что все же необходимо менять сам SQL- запрос, потому что-то как-то отсортировать в PHP этот массив я тоже не представляю. Вот только в таком случае необходимо выбрать MAX(id), где sender != $_SESSION['ID'], и вывести еще предыдущее сообщение. И как я не пробовал писать запросы, у меня получается вывести только два последних сообщения для каждой группы, поэтому и подумал, что можно как-то с помощью PHP вывести лишь нужные данные. В общем, у меня уже мозг поплыл, поэтому и пытаюсь найти помощь. :(
     
  4. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.504
    Симпатии:
    283
    Sc0r нравится это.
  5. Sc0r

    Sc0r Новичок

    С нами с:
    21 дек 2020
    Сообщения:
    20
    Симпатии:
    0
    Хорошо, спасибо большое за помощь! :)
    Попробую такой способ, так как других идей уже просто нет.
     
  6. Sc0r

    Sc0r Новичок

    С нами с:
    21 дек 2020
    Сообщения:
    20
    Симпатии:
    0
    Проблема решена. Решение было слишком очевидным - нужно было лишь немножко поспать. :D