Вывести objectList з MySQL согласно порядку массива в where

368
06 января 2017, 09:54

Беру ряд строк с таблицы MySQL:

$IDs = array(5,3,1,4,2);
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id','introtext')))
    ->from($db->quoteName('#__content'))
    ->where($db->quoteName('id')." IN (".implode(',', $IDs).")");
$db->setQuery($query);
$articles = $db->loadObjectList();

И вывожу на сайте через:

foreach($articles as $article) {
    echo $article->introtext;
}

Но все выводится НЕ согласно порядку массива $IDs т.е. сначало обьект с ID 5, потом 3 и т.д. а в порядке возрастания ID т.е. 1, 2, 3, 4, 5.

Как сделать чтобы всё выводилось согласно массиву $IDs?

ps. Синтаксис API Joomla

Answer 1

Вначале сформировать массив с нужной сортировкой а потом выводить на страницу

// Перестраиваем индексы исходного массива
$IDs = array_merge($IDs);
// Формируем массив из null элементов и длиной исходного массива
$content = array_fill(0, count($IDs), null);
foreach($articles as $article) {
  // заполняем массив в нужном порядке
  $content[array_search($article->id), $IDs] = $article->introtext;
}
// выводим все заполненные значения
foreach($content as $article) {
  if (isset($article))
    echo $article;
}
Answer 2

Нашел сам похожий вариант, но вроде бы проще:

$arrayOfArticles = array();
foreach($articles as $unsortedArticle) {
    $arrayOfArticles[$unsortedArticle->id] = $unsortedArticle;
}
foreach($IDs as $sortedID) {
    $article = $arrayOfArticles[$sortedID];
    echo $article->introtext;
}
READ ALSO
Java - создание графического интерфейса [требует правки]

Java - создание графического интерфейса [требует правки]

Учусь создавать приложения на JavaВозник такой вопрос: на чем лучше создавать графический интерфейс? Делал 2 пробных проекта с GUI, используя...

352
Экзаменационное задание по программированию на Java [требует правки]

Экзаменационное задание по программированию на Java [требует правки]

Привет, есть экзаменационное задание по JavaНадо дописать частично написанную программу, текста самой программы нет, есть только jar файл с кучей...

501
Отображать в виде массива

Отображать в виде массива

Есть метод, где я сохраняю значения нажатого элемента в моём recyclerView:

328
spring boot internationalization без jsp

spring boot internationalization без jsp

собственно можно ли юзать интернационализацию через набор файлов с ресурсами без jsp? в частности интересует angular 2если да, то можно пожалуйста...

385