Grazie mille per la risposta dottwatson.
In effetti dopo un po di problemi/prove ho capito un minimo come funziona
Ma ora si presenta un altro problema e non ne capisco proprio il motivo
In pratica ho bisogno di creare un array di oggetti e poi ordinare questo array a seconda di un paramentro contenuto nell'oggetto:
questo è il pezzo di codice in cui creo l'array e poi lo ordino
Codice PHP:
$listaEventi = array();
while ($riga = mysql_fetch_array($result)){
if($userAgent == "java"){
$listaEventi[] = new Evento($riga['idEvento'],$riga['titolo'],$riga['descrizione'],$riga['categoria'],$riga['cordx'],$riga['cordy'],$riga['indirizzo'],$categoria,$_GET['cordx'],$_GET['cordy']);
}else
$listaEventi[] = new Evento($riga['idEvento'],$riga['titolo'],$riga['descrizione'],$riga['categoria'],$riga['cordx'],$riga['cordy'],$riga['indirizzo'],$categoria,0,0);
}
if($userAgent == "java"){
//ordinamento in base alla distanza
for($i = 0; $i<count($listaEventi) - 1; $i++){
//più piccolo elemento
$min = $i;
for($j=$i+1; $j<count($listaEventi); $j++){
if ($listaEventi[$j]->getDistanza() < $listaEventi[$min]->getDistanza())
$min = $j;
}
// scambia gli elementi i e jmin
$obj = $listaEventi[$min];
$listaEventi[$min] = $listaEventi[$i];
$listaEventi[$i] = $obj;
}
Classe Evento:
Codice PHP:
<?php
class Evento{
public $idmappa;
public $colore;
public $idEvento;
public $categoria;
public $titolo;
public $descrizione;
public $cordx;
public $cordy;
public $indirizzo;
public $distanza;
public $cordx_iniziale;
public $cordy_iniziale;
}
function __construct($idev,$tit,$descr,$cat,$x,$y,$indir,$cat,$xi,$yi){
$this->idEvento = $idev;
$this->titolo = $tit;
$this->descrizione = $descr;
$this->categoria = $cat;
$this->cordx = $x;
$this->cordy = $y;
$this->indirizzo = $indir;
$this->categoria = $cat;
$this->cordx_iniziale = $xi;
$this->cordy_iniziale = $yi;
$this->distanza = setDistanza($this->cordy, $this->cordx, $this->cordy_iniziale, $this->cordx_iniziale);
}
function setDistanza($lat1, $lon1, $lat2, $lon2){
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
return ($miles * 1.609344);
}
function getDistanza(){
return $this->distanza;
}
?>
l'errore che ricevo è il seguente:
Fatal error: Call to undefined method Evento::getDistanza() in C:\Users\Spr1gg4N\Documents\www\eventi.php on line 85
non capisco come mai non riesca a richiamare quel metodo.
Inoltre se faccio una print_r($listaEventi) mi restituisce la stampa di tutti gli elementi dell'array, con i relativi campi ma senza i valori dei campi:
Codice PHP:
Array ( [0] => Evento Object ( [idmappa] => [colore] => [idEvento] => [categoria] => [titolo] => [descrizione] => [cordx] => [cordy] => [indirizzo] => [distanza] => [cordx_iniziale] => [cordy_iniziale] => ) [1] => Evento Object ( [idmappa] => [colore] => [idEvento] => [categoria] => [titolo] => [descrizione] => [cordx] => [cordy] => [indirizzo] => [distanza] => [cordx_iniziale] => [cordy_iniziale] => ) [2] => Evento Object ( [idmappa] => [colore] => [idEvento] => [categoria] => [titolo] => [descrizione] => [cordx] => [cordy] => [indirizzo] => [distanza] => [cordx_iniziale] => [cordy_iniziale] => ) [3] => Evento Object ( [idmappa] => [colore] => [idEvento] => [categoria] => [titolo] => [descrizione] => [cordx] => [cordy] => [indirizzo] => [distanza] => [cordx_iniziale] => [cordy_iniziale] => ) [4] => Evento Object ( [idmappa] => [colore] => [idEvento] => [categoria] => [titolo] => [descrizione] => [cordx] => [cordy] => [indirizzo] => [distanza] => [cordx_iniziale] => [cordy_iniziale] => ) [5] => Evento Object ( [idmappa] => [colore] => [idEvento] => [categoria] => [titolo] => [descrizione] => [cordx] => [cordy] => [indirizzo] => [distanza] => [cordx_iniziale] => [cordy_iniziale] => ) )
non capisco :master: