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

    Incrementare un array in una classe

    Ciao a tutti,

    sto cercando di creare una classe che dovrebbe semplicemente incrementare e visualizzare un array.

    Tipo così

    Codice PHP:
    $a = array();

    $a[0] = "mela";
    $a[1] = "pera";
    $a[2] = "banana";

    foreach (
    $a as $obj) print $obj
    Ecco il mio tentativo

    Codice PHP:
    class Lista {

        private 
    $list '';

        public function 
    __constructor() {
            
    $this->list = array();
        }

        public function 
    add($e) {
            
    $this->list[$this->getLength()] = $e;
        }
        
        public function 
    getList() {
            return 
    $this->list;
        }

        public function 
    getLength() {
            return 
    count($this->list);
        }
    }

    // Test
    $lista= new Lista;
    $lista-> add("One");
    $lista-> add("Two");
    $lista-> add("Three");
    var_dump($lista); 
    Così facendo ottengo un array di lunghezza 1 con dentro solo l'ultima stringa (Three).
    Qualcuno può aiutarmi a capire dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    prova cn $this->list[] = $e;
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3

  4. #4
    probabilmente provieni dal linguaggio C

    in php non ho mai avuto la necessità di una classe che maneggiasse gli array perchè sono estremamente duttili gia di loro
    semplicità ... al sol nominarla sembra svanire

  5. #5
    Il fatto è che non ho saputo trovare un'alternativa migliore degli array per risolvere il mio problema.
    Questa classe mi serviva semplicemente per popolare una lista in HTML.

    Codice PHP:
    class ErrorList {

        private 
    $list = array();

        public function 
    __constructor() {}

        public function 
    add($error) {
            
    $li_error "[*]".$error."";
            
    $this->list[] = $li_error;
        }
        
        public function 
    getList() {
            return 
    $this->list;
        }

        public function 
    getLength() {
            return 
    count($this->list);
        }

    Durante una registrazione con un form HTML, con questa classe ErrorList raccolgo tutti gli eventuali errori, così

    Codice PHP:
    $e = new ErrorList;
    $e->add("Le password non coincidono."); 
    e alla fine li visualizzo

    Codice PHP:
    Durante il processo di registrazione si sono verificati i seguenti errori:</p>
    <ul>
        <?php
        
    foreach ($e->getList() as $error)
            print 
    $error
        
    ?>[/list]
    Se fossi stato in Java probabilmente avrei usato un ArrayList<String>, decisamente più comodo dei classici array, ma in PHP non c'è niente di simile (almeno credo). Sarei felice di essere smentito

  6. #6
    Gli array vanno benissimo, quello che non serve e' una classe che replica le funzioni che gli array hanno gia' disponibili nativamente. Inoltre rivedrei un pochino il concetto, la tua lista deve contenere solo le informazioni, non anche dei tag HTML (potresti anche usarla in altri contesti, no?) che invece vanno messi SOLO nella parte di visualizzazione.

    Quindi:
    Codice PHP:
    $errorlist = array();
    $errorlist[] = "Le password non coincidono"
    Codice PHP:


    Durante il processo di registrazione si sono verificati i seguenti errori:</p> 
    <ul>
    <?php foreach ( $errorlist as $error ): ?>[*]<?php echo $error?>
    <?php 
    endforeach; ?>[/list]

  7. #7
    In effetti, come già accennato da biagiopas, gli array in PHP sono più simili agli ArrayList che agli array di Java.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Vero, gli array di PHP sono più dinamici rispetto a quelli di Java... in tutta sincerità non ci avevo mai fatto caso. Insomma si è arrivati alla conclusione che la mia classe è inutile. Che dire, è bello confrontarsi!

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.