Login   Register  
PHP Classes
elePHPant
Icontem

File: Geo.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of stefano dolzi  >  Combinatorics  >  Geo.php  >  Download  
File: Geo.php
Role: Example script
Content type: text/plain
Description: Class for example n.2
Class: Combinatorics
Make combinatorial statistics calculations
Author: By
Last change:
Date: 2004-06-26 10:38
Size: 4,317 bytes
 

Contents

Class file image Download
<? 
require "Combinatorics.php";

class 
Geo extends Combinatorics {
var 
$nodes;
var 
$distances;


/***  Add a node   ***/
function AddNode($key$value){
$insert="yes";
$insert=$this->isUnique($key);
if (
$insert=="no"){
echo 
"Node key must be unique. " ;
}
else
$this->nodes[$key]=$value;
}
/***  Check if the node name is unique  ***/
function isUnique($nodekey){
$UNIQUE="yes";
if (
is_Array($this->nodes)) {
while (list(
$key14,$value14 )=each($this->nodes)){
if (
trim($key14)==trim($nodekey))
$UNIQUE="no";
return 
$UNIQUE ;
}
$d=reset($this->nodes);
}
}



/*** Add distances Array ***/

function addDistArray($arraykey$distarray){
ksort($distarray);
reset($distarray);

$this->distances[$arraykey]=$distarray;

}


/* Print Distances */

function printDistances(){

echo 
"<CENTER>";

$start_table="<TABLE BORDER='1' CLASS=TABLE>";
$end_table="</TABLE>";
$start_row="<TR>";
$end_row="</TR>";
$start_col1="<TD CLASS=FCOL>";
$start_col="<TD align='RIGHT'>";
$end_col="</TD>";
$start_head="<TH>";
$end_head="</TH>";

ksort($this->nodes);
reset($this->nodes);

echo 
$start_table;
//echo $start_row;
//echo $start_col;
echo $start_head;
echo 
"FROM/TO" ;
echo 
$end_head;
//echo $end_col;
while (list($keynode$namenode)=each($this->nodes))
{
//echo $start_col;
echo $start_head;
echo 
$namenode;
echo 
$end_head;
//echo $end_col;
}

//echo $end_row;


reset($this->nodes);
ksort($this->distances);
$d=reset($this->distances);
while (list(
$cityfrom$cityarray)=each($this->distances))
{

echo 
$start_row;
echo 
$start_col1;
echo  
$this->nodes["$cityfrom"]  ;
echo 
$end_col;
$d=reset($cityarray);
while (list(
$cityto$citydist)=each($cityarray))
{
echo 
$start_col;
echo 
$citydist  ;
echo 
$end_col;
}

echo 
$end_row;

}

echo 
$end_table;

echo 
"</CENTER>";
}

/*** Print Node Name **/
function printNode(){
$d=reset($this->nodes);
if (
is_Array($this->nodes)) {
while (list(
$key1,$value1 )=each($this->nodes)){
echo 
$value1 ."<br></br>";
}
}
}

/**  Returns all dispositions without repetitions **/

function allDisp($numOfElements){
$d=reset($this->nodes);
$id_el=array_keys($this->nodes);
$Disp=$this->makeDispositionWoR ($id_el$numOfElements);

return 
$Disp;
}


function 
getCityName($idCity){



while (list(
$key$myarr)=each($idCity))
{
$temp=array();
$d=reset($myarr);
while (list(
$arrkey$arrvalue)=each($myarr))
{

$temp[]=$this->nodes[$arrvalue];
}

$cityNames[]=$temp;

}

return 
$cityNames;
}


Function 
calcDistance($iter){

while (list(
$key$myarr)=each($iter))
{

$d=reset($myarr);
$nOfEl=count($myarr);
$distk=0;
$counter0;
$prev="nuovo";
while (list(
$arrkey$arrvalue)=each($myarr))
{

$counter+=1;

if (
$counter==1){
$prev=$arrvalue;
}

else {
//print "citta" . $prev .  "<BR></BR>";
$distk+=$this->distances[$prev][$arrvalue];

$prev=$arrvalue;
}



}
echo 
"Km:" $distk "<BR></BR>";
}



}


function 
addDistanceToIter($iter){


while (list(
$key$myarr)=each($iter))
{

$d=reset($myarr);
$nOfEl=count($myarr);
$distk=0;
$counter0;
$prev="nuovo";
while (list(
$arrkey$arrvalue)=each($myarr))
{

$counter+=1;

if (
$counter==1){
$prev=$arrvalue;
}

else {

$distk+=$this->distances[$prev][$arrvalue];

$prev=$arrvalue;
}

}
$iter[$key]["distance"]=$distk;
}


return 
$iter;

}


function 
cityPlusDistance($idCity){



while (list(
$key$myarr)=each($idCity))
{
$temp=array();
$d=reset($myarr);
$distk=0;
$counter0;
$prev="nuovo";
while (list(
$arrkey$arrvalue)=each($myarr))
{

$counter+=1;

if (
$counter==1){
$prev=$arrvalue;
}

else {

$distk+=$this->distances[$prev][$arrvalue];

$prev=$arrvalue;
}



$temp[]=$this->nodes[$arrvalue];

}
$temp["distance"]=$distk;
$cityWithDistance[]=$temp;

}

return 
$cityWithDistance;
}


function 
minDistance($cityAndDistance){
$min_arr=array();
$minval=10000000000000;
while (list(
$key$myarr)=each($cityAndDistance))
{

if (
$myarr["distance"] < $minval)
$minval=$myarr["distance"] ;

}

$d=reset($cityAndDistance);


while (list(
$key$myarr)=each($cityAndDistance))
{

if (
$myarr["distance"] == $minval)
$min_arr[]=$myarr ;

}


return 
$min_arr;

}

}