Сортировать результат цикла foreach - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу отсортировать его по базе расстояний $ в цикле foreach в моих ПРОСМОТРАХ ... вот мой код в Моделях

    $db = $this->getDbo();
    $query = $db->getQuery(true)
                ->select('*')
                ->from('#__load');

    $db->setQuery($query);               
    $db->query();
    $rows = $db->loadObjectList();
    return $db->loadObjectList();

Это код в моем представлении, где я хочу отсортировать его по расстоянию

  foreach ($this->items as $i => $item) {  
       $distance = $item->result1 * $item->result2        
  sort($distance)
}

echo $distance

результат

3, 6, 2, 7, 8

я хочу показать вот так

2, 3, 6, 7, 8

Ответы [ 3 ]

2 голосов
/ 27 сентября 2019

sort работает с массивом, и вы вызываете метод sort для каждого элемента массива, который не будет работать.

Вместо этого вы можете выполнить цикл foreach, а затем выполнить сортировку после:

  $array = [];
  foreach ($this->items as $i => $item) {  
      $distance = $item->result1 * $item->result2;        
      $array[] = $distance;
  }
  sort($array);
  var_dump($array);

https://www.php.net/manual/en/function.sort.php

0 голосов
/ 30 сентября 2019

Здесь есть несколько вещей, которые не имеют смысла для меня, поэтому я буду слепо пытаться реорганизовать ваши сценарии и перенести всю обработку в ту модель, к которой они относятся (вам не следует манипулировать данными вview).

Непроверенный фрагмент:

$db = $this->getDbo();
$query = $db->getQuery(true)
            ->select('result1 * result2')
            ->from('#__load')
            ->orderBy(1);
$db->setQuery($query);               
return $db->loadColumn();

Соответствующие страницы для чтения:

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

$this->items = [2, 3, 6, 7, 8];

Если вы являетесь пользователем Joomla, присоединяйтесь к нам на Joomla Stack Exchange .Просмотрите моих ответов на mysql помеченных вопросов для объяснения примеров и лучших практик.

Если вы живете в Брисвегасе, приходите на нашу ежемесячную встречу группы пользователей Joomla в Уэст-Энде (мы не страшные люди).Это место, где вы можете использовать сеть IRL людей, которые хотят помочь вам развить свои навыки и завершить ваши проекты.

0 голосов
/ 27 сентября 2019

Сначала преобразуйте ваш результат $this->items в (array)$this->items, а затем используйте одну из следующих функций:

sort() - sort arrays in ascending order
rsort() - sort arrays in descending order
asort() - sort associative arrays in ascending order, according to the value
ksort() - sort associative arrays in ascending order, according to the key
arsort() - sort associative arrays in descending order, according to the value
krsort() - sort associative arrays in descending order, according to the key

и получите отсортированное значение.

...