Wed, May 25, 2022
https://devcodepro.comdevcodepro
Home · Latest · Trends
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}
rated 18 times (18) (0)
comments: 2 / hits: 6595  / 6 years ago, sat, sep 10, 16, 03:07:57
More From » PHP
 

Comments

3
For PHP 7.2.

Code:
<?php
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] = function ($a, $b) {
return $code;
}
;
} else {
$sort_func = $sort_funcs[$sortby];
}
@uasort($data, $sort_func);
}
function smarty_modifier_sortby($arrData, $sortfields) {
array_sort_by_fields($arrData, $sortfields);
return $arrData;
}
?>
[#10] Wednesday, September 12, 2018, 3:02:45
 
my3profile
commented 4 years ago
1
What about:

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
 
James Bo
commented 8 months ago
Only authorized users can post. Please sign in first, or register a free account
Login with Google
 
Share
Posted
Michael
Member since Sep 10, 2016
Total Code Snippets: 5
Total Comments: 0
Location: n/a
Michael snippets
6 years ago, sat, sep 10, 16, 3:13:33
<?php // index.php if(isset($_POST['submit'])) { if(get_magic_quotes_gpc()) { $domainname = htmlspecialchars(stripslashes($_POST['domainname'])); } else { $domainname = htmlspecialchars($_POST['domainname']); } if(!filter_var(gethostbyname($domainname),FILTER_VALIDATE_IP)) { echo "false"; } else { echo "true"; } } else { ?> <form method="post" action="index.php"> Domain Name<br /> <input class="input" placeholder="example.com" name="domainname" type="text" /><br /> <br /> <input type="submit" value="Submit" name="submit" /> </form> <?php } ?>
comments: 0 / hits: 3173
PHP
6 years ago, sat, sep 10, 16, 3:16:20
<?php $info = new ZipArchive(); $info->open('file.zip'); for($i = 0; $i < $info->numFiles; $i++ ){ $files = $info->statIndex($i); echo '<pre>'; print_r(basename($files['name'])); echo '</pre>'; } ?>
comments: 0 / hits: 3368
PHP
6 years ago, sat, sep 10, 16, 3:19:13
{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}
comments: 1 / hits: 7645
PHP
5 years ago, tue, feb 21, 17, 2:06:26
<?php $url = 'http://example.com'; $favicon = "https://www.google.com/s2/favicons?domain=".$url; if($favicon == false) { $newimage = "0"; } else { $extension = "png"; $time = date("ymdHis"); $newimage = $time.".".$extension; $destination = "uploads/".$newimage; if(@file_put_contents($destination,file_get_contents($favicon))) { echo "true"; } else { $newimage = "0"; } } ?>
comments: 0 / hits: 2639
PHP