egroupware/phpgwapi/inc/class.arrayfunctions.inc.php

73 lines
2.3 KiB
PHP
Raw Normal View History

2002-12-18 01:20:46 +01:00
<?php
2003-07-03 21:29:26 +02:00
/*******************************************************************\
2004-08-09 15:46:03 +02:00
* eGroupWare API - Arrayfunctions *
2003-07-03 21:29:26 +02:00
* Written by Lars Kneschke <lkneschke@phpgw.de> *
* Copyright (C) 2002, 2003 Lars Kneschke *
* ----------------------------------------------------------------- *
2004-08-09 15:46:03 +02:00
* This library is part of the eGroupWare API *
2003-07-03 21:29:26 +02:00
* ----------------------------------------------------------------- *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
\*******************************************************************/
2002-12-18 01:20:46 +01:00
/* $Id$ */
class arrayfunctions
{
/*
* arfsort() - (AR)ray (F)ield Sort.
* Sort a multi-dimensional array according
* to a list of fields.
* @param $a The array to sort
* @param $fl Field list (in order of importance)
*/
function arfsort( $a, $fl, $_sort='ASC' )
2002-12-18 01:20:46 +01:00
{
$GLOBALS['__ARFSORT_LIST__'] = $fl;
$this->sort=$_sort;
2002-12-18 01:20:46 +01:00
if (is_array($a))
{
usort( $a, array($this,'arfsort_func') );
return $a;
}
return False;
}
/*
* Internal sorting function for arfsort()
*/
function arfsort_func( $a, $b )
{
foreach( $GLOBALS['__ARFSORT_LIST__'] as $f )
{
if($this->sort == 'ASC')
{
$strc = strcmp( $a[$f], $b[$f] );
}
else
{
$strc = strcmp( $b[$f], $a[$f] );
}
2002-12-18 01:20:46 +01:00
if ( $strc != 0 )
{
return $strc;
}
}
return 0;
}
} // end class arrayfunctions