download this file: func.array.php view text/plain: func.array.php file encoding: UTF-8 [goback]
<?php
##
## download server monitoring tools
## support FreeBSD 4.x
##
## [author]
## - san2(at)linuxchannel.net
##
## [changes]
## - 2010.04.20 : add array_avg()
## - 2004.02.03 : new build
##
## $array sort/rsort by user $cmp array
##
function array_usort(&$array, $cmp, $reverse=0)
{
if($reverse) @arsort($cmp);
else @asort($cmp);
$cmp = @array_keys($cmp);
$size = sizeof($cmp);
for($i=0; $i<$size; $i++)
{
$key = &$cmp[$i];
$newarr[] = &$array[$key];
}
$array = array(); // reset, don't work unset($array);
$array = $newarr; // change
unset($newarr);
return $array;
}
## $array asort/arsort by user $cmp array
##
function array_uasort(&$array, $cmp, $reverse=0)
{
if($reverse) @arsort($cmp);
else @asort($cmp);
$cmp = @array_keys($cmp);
$size = sizeof($cmp);
for($i=0; $i<$size; $i++)
{
$key = &$cmp[$i];
$newarr[$key] = &$array[$key];
}
$array = array(); // reset, don't work unset($array);
$array = $newarr; // change
unset($newarr);
return $array;
}
## $array ksort/krsort by user $cmp array
##
function array_uksort(&$array, $cmp, $reverse=0)
{
if($reverse) @krsort($cmp);
else @ksort($cmp);
$cmp = @array_keys($cmp);
$size = sizeof($cmp);
for($i=0; $i<$size; $i++)
{
$key = &$cmp[$i];
$newarr[$key] = &$array[$key];
}
$array = array(); // reset, don't work unset($array);
$array = $newarr; // change
unset($newarr);
return $array;
}
function array_count_all($arr)
{
if(!is_array($arr)) return 0;
return (int)(sizeof($arr,COUNT_RECURSIVE) - sizeof($arr));
}
function array_avg($arr)
{
if(!is_array($arr)) return 0;
$size = sizeof($arr);
$total = array_sum($arr);
return ($size>0) ? (int)($total/$size) : 0;
}
?>