<?php
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // FILE NAME : Biblio_array.inc.php //
// LANGUAGE : PHP //
// AUTHOR : Julien PACHET //
// EMAIL : j|u|l|i|e|n| [@] |p|a|c|h|e|t.c|o|m // // VERSION : 1.11 // // CREATION : 05/11/2003 //
// LICENCE : GNU/GPL // ////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// What the library does: //
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// * Help manipulate arrays //
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Changelog: //
// ---------- //
// Date Version Actions //
// ------------------------------------------------------------------------------------------------------ //
// 05/11/2003 1.0 Tested & Final version //
// 29/02/2004 1.1 array_2D_transpose //
// now can transpose associative arrays //
// 01/03/2004 1.11 optimizations //
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Need to work: //
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// * other file : none //
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Declaration //
// ----------- //
// array_1D($vect) //
// array_2D($array) //
// array_assoc_display($array) //
// array_2D_transpose($tab) //
// array_2D_sort($tab,$column_name,$sens="ASC") //
//////////////////////////////////////////////////////////////////////
function array_1D($vect) {
/**
* array_1D() : return a displayable version of an 1D array
*
* @param $vect
* @return
*/
if (count($vect)>0)
return "[ ".implode(",",$vect)." ]";
else
return "[ ]";
}
function array_2D($array) {
/**
* array_2D() : return a displayable version of an 2D array
*
* @param $array
* @return
*/
for ($res.=$i=0;$i<count($array);$i++)
$res.="\t".array_1D($array[$i])."<br>\n";
return "[ <br>\n$res ]<br>\n";
}
function array_assoc_display($array) {
/**
* array_assoc_display() : display an associated array
*
* @param $array
* @return
*/
echo "<pre>\n";
print_r($array);
echo "</pre>\n";
}
function array_2D_transpose($tab) {
/**
* array_2D_transpose() : mathematical transpose of the 2D array
*
* @param $tab
* @return
*/
$tab1=array_keys($tab);
$tab2=array_keys($tab[$tab1[0]]);
$l1=count($tab1);
$l2=count($tab2);
for ($x=0;$x<$l1;$x++)
for ($y=0;$y<$l2;$y++)
$res[$tab2[$y]][$tab1[$x]]=$tab[$tab1[$x]][$tab2[$y]];
return $res;
}
function array_2D_sort($tab,$column_name,$sens="ASC") {
/**
* array_2D_sort() : sort a 2D array by the $column_name $column
*
* @param $tab
* @param $column_name
* @param $sens
* @return
*/
$res=array();
while (count($tab)>0) {
for ($i=0;$i<count($tab);$i++)
$column[$i]=$tab[$i][$column_name];
for ($pos=0,$i=0;$i<count($tab);$i++)
$pos=($sens=="ASC")?(($tab[$i][$column_name]<$tab[$pos][$column_name])?$i:$pos):(($tab[$i][$column_name]>$tab[$pos][$column_name])?$i:$pos);
$res[]=$tab[$pos];
array_splice($tab,$pos,1);
}
return $res;
}
?>
|