18
Sort (Order) foreach results in Smarty
Smarty sort foreach results in Smarty file
// libs/plugins/modifier.sortby.php:
<?php
# sorts an array of named arrays by the supplied fields
# code by dholmes at jccc d0t net
# taken from http://au.php.net/function.uasort
# modified by cablehead, messju and pscs at http://www.phpinsider.com/smarty-forum
function array_sort_by_fields(&$data, $sortby){
static $sort_funcs = array();
if (empty($sort_funcs[$sortby]))
{
$code = "$c=0;";
foreach (explode(',', $sortby) as $key)
{
$d = '1';
if (substr($key, 0, 1) == '-')
{
$d = '-1';
$key = substr($key, 1);
}
if (substr($key, 0, 1) == '#')
{
$key = substr($key, 1);
$code .= "if ( ( $c = ($a['$key'] - $b['$key'])) != 0 ) return $d * $c;n";
}
else
{
$code .= "if ( ($c = strcasecmp($a['$key'],$b['$key'])) != 0 ) return $d * $c;n";
}
}
$code .= 'return $c;';
$sort_func = $sort_funcs[$sortby] = create_function('$a, $b', $code);
}
else
{
$sort_func = $sort_funcs[$sortby];
}
@uasort($data, $sort_func);
}
#
# Modifier: sortby - allows arrays of named arrays to be sorted by a given field
#
function smarty_modifier_sortby($arrData,$sortfields) {
array_sort_by_fields($arrData,$sortfields);
return $arrData;
}
?>
// Usage:
{foreach from=$results|@sortby:"itemid" item=foo}
{$foo.text}
{/foreach}
Interserver | Standard & VPS Cloud Hosting | $2.50 /Month
Flexible VPS hosting platform to deploy your online projects.
Economical and balanced between processor cores, memory and storage
rated 18 times
(18)
(0)
comments: 2 / hits: 7759
/ 7 years ago, sat, sep 10, 16, 03:07:57
More From
» PHP
Comments
3
For PHP 7.2.
Code:
[#10] Wednesday, September 12, 2018, 3:02:45

commented 5 years ago
my3profile
1
What about:
without modifer
Code:
//sort($posts);
//rsort($posts);
//asort($posts);
//ksort($posts);
//arsort($posts);
krsort($posts);
$smarty->assign('posts', $posts);
without modifer
[#58] Saturday, October 16, 2021, 12:37:31
commented 2 years ago