Newsgroup: it.comp.www.php
Titolo: Problema con ForEach e array di classi

ho la seguente classe
class example {
var attr;
var desc;
function Carica(){
	$this->attr=array() //array di classi attributo che contengono
		//$attributo->tipo, $attributo->desc, $attributo->note
 
	$this->desc=getDesc($this->attr);
}
function getDesc($attributi) {
	$dsc="";
	foreach($attributi as $attr) {
		$dsc=$dsc.$attr->tipo." (".$attr->desc." ".$attr->note.")";
	}
	return $dsc;
}
}
Quando tento di leggere example->desc leggo "empty".
Sbaglio qualcosa?
Mauro

Mauro D. wrote:

ma cosa passi a Carica?
potresti fornire un codice esempio ed un output desiderato..
-- 
www.iuz-lab.info

 potresti fornire un codice esempio ed un output desiderato..
 $immobile=new Immobile;
 $immobile->Carica($_GET['cim']);
------------------------------------------------
class Immobile{
 var $id;
 var $utente;
 var $codice;
 var $contratto;
 var $stato;
 var $tipologia;
 var $prezzo;
 var $mq;
 var $regione;
 var $provincia;
 var $comune;
 var $localita;
 var $descrizione;
 var $attributi;
 var $descrattr;
 function Immobile(){
 }
function Carica($cim)
{
     global $db;
  global $logger;
  $sql = "select 
immobili.id
,idutente,codice,contratto,stato,tipologia,prezzo,mq,immobili.comune,immobili.provincia,immobili.localita,immobili.descrizione 
from immobili where 
immobili.id
=".$cim;
  $logger->log($sql);
  if ( DB::isError( $immobile=$db->getAll($sql) ) ) {
      QueryError(DB::errorMessage($immobile));
  }
  $this->id=$cim;
  $this->utente=new Utente($immobile[0]['idutente']);
  $this->codice=$immobile[0]['codice'];
  $this->contratto=$immobile[0]['contratto'];
  $this->stato=$immobile[0]['stato'];
  $this->tipologia=$immobile[0]['tipologia'];
  $this->prezzo=$immobile[0]['codice'];
  $this->mq=$immobile[0]['codice'];
  $this->regione='';//$immobile[0]['codice'];
  $this->comune=$immobile[0]['comune'];
  $this->provincia=$immobile[0]['provincia'];
  $this->localita=$immobile[0]['localita'];
  $this->descrizione=$immobile[0]['descrizione'];
  $this->attributi=$this->getAttributi($cim);
  $this->foto=$this->getFoto($cim);
  $this->descrattr=$this->getDescrAttr($this->attributi);
}
function getDescrAttr($attributi) {
  $descrattr="";
//while (list($tipo,$desc,$note)=each($attributi)) {
//  $descattr=$descattr.$tipo." (".$desc." ".$note." mq), ";
//}
  foreach($attributi as $attributo) {
   $descattr=$descattr.$attributo->tipo." (".$attributo->descrizione." 
".$attributo->note." mq), ";
  }
  return $descrattr;
}
function getAttributi($cim) {
     global $db;
  global $logger;
  $sql = "select descrizione,note,tipo from caratteristiche ".
    "where immobile=".$cim." and tipo!='foto'";
  $logger->log($sql);
  if ( DB::isError( $attributi=$db->getAll($sql) ) ) {
      QueryError(DB::errorMessage($attributi));
  } else {
   $retval=array();
   foreach($attributi as $value) {
    $attrval=new 
Attributo($value['tipo'],$value['descrizione'],$value['note']);
    $retval[]=$attrval;
   }
  }
  return $retval;
}
}
--------------------------------------------------------------
Attributo è una classe con tre membri: tipo, descrizione, note.
da un array del tipo
0 => Attributo object
            tipo="cucina"
            descrizione="commento"
            note="20"
1 => Attributo object
            tipo="soggiorno"
            descrizione="commento"
            note="20"
devo ottenere $immobile->descrattr="cucina (commento 20 mq), soggiorno 
(commento 20 mq)"

>potresti fornire un codice esempio ed un output desiderato..
chiedo venia! puntavo una volta $descrattr e l'altra $descattr...
maledetta testa bacata!
Mauro