Visualizzazione risultati 1 fino 7 di 7

Discussione: Simplexml->count() non funziona

  1. #1
    Guest

    Predefinito Simplexml->count() non funziona

    salve a tutti, volevo evitare di fare questo post, ma non sono riuscito a trovare la versione di php di AV; poichè il metodo count() dell'oggetto simplexml è stato inserito solo con la versione 5.3.0 di php non mi funziona;
    se è così è un bel peccato perchè è una funzione che torna molto utile nella gestione degli xml, specie in fase di inserimento per la creazione di un id ad esempio.

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Puoi usare semplicemente la funzione count()

    Ho modificato l'esempio che riportato su php.net:
    Codice PHP:
    <?php
    $xml
    = <<<EOF
    <people>
    <person name="Person 1">
    <child/>
    <child/>
    <child/>
    </person>
    <person name="Person 2">
    <child/>
    <child/>
    <child/>
    <child/>
    <child/>
    </person>
    </people>
    EOF;

    $elem = new SimpleXMLElement($xml);

    foreach (
    $elem as $person) {
    printf("%s has got %d children.\n", $person['name'], count($person)); // $person->count() diventa count($person)
    }
    ?>
    Che restituisce:
    Person 1 has got 3 children.
    Person 2 has got 5 children.

  3. #3
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito

    o magari controlla di aver abilitato il php5 nella cartella in cui vuoi eseguire quello script


    Si, la mia firma cambia immagine continuamente! :)

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da skydrake Visualizza messaggio
    o magari controlla di aver abilitato il php5 nella cartella in cui vuoi eseguire quello script
    Non è quello il problema. Su Av è installato php 5.2.9 e per poter utilizzare quella funzione SimpleXML->count è necessario php 5.3

  5. #5
    Guest

    Predefinito

    grazie a tutti per le risposte;

    x javascripter: in effetti il metodo funziona ma dal mio punto di vista è più dispersivo a confronto di un semplice count(); comunque grazie perchè è una valida alternativa;

    x skydrake: purtroppo come, ti ha risposto javascripter, ho abilitato già php 5 nel sito ma la versione in effetti non è quella che supporta l'ultima versione dell'oggetto simplexml ed infatti non lo sapevo che AV usa la 5.2.9; grazie comunque;

    ne approfitto per chiedere ai gestori di AV se anche questa modifica, come quella di includere l'estensione msqli, sarà introdotta a breve;
    grazie
    Ultima modifica di fortenet3d : 22-05-2010 alle ore 14.50.34

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se proprio non ti trovi, puoi sempre estendere la classe SimpleXMLElement:
    Codice PHP:
    <?php
    class XML extends SimpleXMLElement {
    public function
    count() {
    return
    count($this->child);
    }
    }

    $xml = <<<EOF
    <people>
    <person name="Person 1">
    <child/>
    <child/>
    <child/>
    </person>
    <person name="Person 2">
    <child/>
    <child/>
    <child/>
    <child/>
    <child/>
    </person>
    </people>
    EOF;

    $elem = new XML($xml);

    foreach (
    $elem as $person) {
    printf("%s has got %d children.\n<br>", $person['name'], $person->count());
    }
    ?>
    L'unica modifica che dovrai fare è di utilizzare la classe XML invece di SimpleXMLElement (come costruttore dell'oggetto)!
    Ultima modifica di javascripter : 22-05-2010 alle ore 20.46.42

  7. #7
    Guest

    Predefinito

    grazie mille, la possibilità di estendere la classe non mi è proprio passata per la mente; quì secondo me si vede chi programma in oop, nell'applicare le regole dell'oop per la risoluzione di problemi

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •