Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Prendere il valore di un oggetto inserito in un array

    Buonasera a tutti!
    Ho un array composto da oggetti così creato:
    $famiglia = array(
    $utente1,
    $utente2,
    $utente3,
    $utente4
    );

    Ogni utente è un istanza di una classe e le variabili di istanza della classe sono private e non posso inserire direttamente nome ed età come chiave=>valore all'interno dell'array
    il print_r di $famiglia mi stampa questo:
    Array ( [0] => persona Object ( [nome:persona:private] => Antonio [eta:persona:private] => 26 ) [1] => persona Object ( [nome:persona:private] => Paolo [eta:persona:private] => 37 ) [2] => persona Object ( [nome:persona:private] => Alice [eta:persona:private] => 7 ) [3] => persona Object ( [nome:persona:private] => Matteo [eta:persona:private] => 2 ) )

    Come posso controllare le età delle persone per trovare il più giovane?
    Grazie a tutti!
    Ultima modifica di MrJester; 13-07-2014 a 16:36

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Non puoi.
    Privato => Non visibile dall'esterno della classe
    No

  3. #3
    Facendo un metodo dentro alla classe che mi riprende quell'array?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Non puoi semplicemente dichiarare le proprietà come public?

    Comunque dalla classe non puoi prendere l'array
    No

  5. #5
    Non so se può servire a qualcosa ma creando un metodo statico dove gli passo l'array di oggetti?
    codice:
    public static function piuGiovane($arra){
    	//codice per accedere al valore degli oggetti
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Ma perché non le dichiari public?

    Comunque puoi fare così:
    Codice PHP:
    class persona {
        ...
        function 
    __get ($var) {
            if (
    $var === "eta") {
                return 
    $this->eta;
            }
        }
        ...

    Così il valore è visibile dall'esterno ma modificabile solo dall'interno
    No

  7. #7
    Sono arrivato alla soluzione, dato che l'array è formata da oggetti posso utilizzare dei metodi interni alla classe per accedere agli attributi degli oggetti quindi ho creato
    codice:
    public function getNome(){
        return $this->nome;
    }    
    public function getEta(){
        return $this->eta;
    }
    Passando poi l'array di oggetti al metodo statico piuGiovane posso effettuare il ciclo for per avere l'oggetto più giovane:
    codice:
    public static function piuGiovane($arra){
        $piuGiovane = 0;
            for($i=1;$i<count($arra);$i++):
                if($arra[$piuGiovane]->getEta()>$arra[$i]->getEta()):
                    $piuGiovane = $i;
                    endif;
            endfor;
            return $arra[$piuGiovane]->stampa();        
    }
    il metodo stampa che stampa appunto gli attributi dell'oggetto:
    codice:
    public function stampa(){
        echo "il tuo nome è ". $this->nome .", la tua età è ". $this->eta.'<br />';
    }

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.