我想在我的VIEWS中的foreach循环中以$ distance为基础对它进行排序。
$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
答案 0 :(得分:3)
sort在数组上起作用,而你正在做的是对数组中每一个无效的项目调用sort。
相反,您可以做的是先进行foreach循环,然后再进行排序:
$array = [];
foreach ($this->items as $i => $item) {
$distance = $item->result1 * $item->result2;
$array[] = $distance;
}
sort($array);
var_dump($array);
答案 1 :(得分:1)
首先将结果$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
并获得排序的值。
答案 2 :(得分:0)
这里有些事情对我来说没有意义,所以我会盲目尝试重构您的脚本,并将所有处理放入它所属的模型中(您不应该在视图)。
未经测试的代码段:
$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加入我们。浏览of my answers to mysql
tagged questions以获得解释的示例和最佳实践。
如果您住在布里斯韦加斯,请参加我们在西区的每月Joomla用户组聚会(我们并不吓人)。在这里,您可以利用IRL的人员网络来帮助您提高技能并完成项目。