Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379

    array multidimensionale to string

    Buon pomeriggio,

    ho un quesito e dire il vero e' da quale giorno che ci penso senza arrivare ad un risultato soddisfacente: E' possibile trasformare un array multidimensionale del quale non si conoscono gli esatti livelli, in una stringa?

    faccio un esempio:
    Codice PHP:
        $test = array(
                        
    => array(
                                
    1=> array(    =>'1_1_uno',
                                            
    =>'1_1_due'
                                    
    ),
                                
    2=>'1_due',
                                
    3=>'1_tre'
                            
    ),
                        
    => array(
                                
    1=>'2_uno',
                                
    2=> array(    =>'2_1_uno',
                                            
    =>'2_1_due'
                                    
    ),
                                
    3=>'2_tre'
                            
    ),
                        
    => array(
                                
    1=>'3_uno',
                                
    2=>'3_due',
                                
    3=>'3_tre'
                            
    ),
                        
    => array(
                                
    1=>'4_uno',
                                
    2=>'4_due',
                                
    2=> array(    =>'4_1_uno',
                                            
    =>'4_1_due'
                                    
    )
                            )
                        
    => '5prova',
                        
    => '6prova'
                
    ); 
    esiste una funzione ini php o mi potreste aiutare a crearne una che mi dia un output in stringa di quanto sopra?

    se non fosse per l'incertezza che l'array avesse 1,2,3 o piu' livelli non sarebbe difficile fare cicli nei cicli

    del resto ringrazio dell'ascolto e resto in attesa di risposte!

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    penso che tu debba fare una funzione ricorsiva ed usare "implode"

    EDIT: essendo a due livelli bastano due cicli uno dentro l'altro

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    io avevo pensato ad una cosa del genere:

    Codice PHP:
        function _loop($array,$out=''){
            foreach(
    $array as $key=>$valore){
                if(
    is_array($valore)){
                    
    _loop($valore);
                } else {
                    
    $out.=$valore;
                }
            }return 
    $out;
        } 
    xò cosi' facendo mi riconosce solamente le voce 5,6 del prima array come mai?

  4. #4

  5. #5
    opzione 1:
    echo print_r($array, true); // true e' fondamentale, altrimenti non ritorna stringa ma stampa direttamente

    var_dump($array); // stampa comunque

    codice:
    function dump($whathever, $exit = false){
        if($exit){
            echo '<pre>';
            var_dump($whathever);
            exit('</pre>');
        } else
            return print_r($whathever, !$exit);
    }
    
    
    // dumpa ed esci
    dump(array(1,2,array(3)), true);
    
    // to string
    $arrayStringa = dump(array(1,2,array(3)));
    
    // e se vuoi ...
    echo $arrayStringa;


    [edit]
    mi sa che non ho capito cosa devi fare ... ma non ha senso dire "da array multi dimensionale a stringa" ... rendilo "flat" (singola dimensione) ed usa implode
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    sto cercando di fare un template engine mio (molto semplice), ma come vedete sono solo alle prime armi con la programmazione, confronto a voi. quello che cercavo di fare era di caricare i cicli un un array e scioglierli poi con la funzione in automatico.

    Anche se mi sono accorto che questa è una pessima idea per raggiungere cio che voglio fare, mi servirebbe davvero una gestione per i cicli, e vi prego profondamente di darmi una mano.

    Togliendo le modifiche che ho cercato di fare per fare sta cosa per i loop, questo è cio' che ho già fatto... spero che possiate darmi qualche consiglio...
    Codice PHP:
    <?php // gestione dei template del sito
    class template {    
        public 
    $template;

        function 
    __construct($path){
            
    $this->template file_get_contents($path);
        }        
        function 
    replace($tags) {
            foreach(
    $tags as $key => $value) {
                
    $this->template str_replace("{*".$key."*}"$value$this->template);
            }
        }
        function 
    publish() {
            return print(
    $this->template);
        }
        function 
    __destruct() {
            unset(
    $this->template);
        }
    }

    // come eseguire la classe
    $tpc     = new template("prova.html");
    $t_array     = array("title"=>"pagina di prova","prova"=>"questo è un testo di prova");
    $t_class->replace($t_array);
    $t_class->publish();
    ?>

  7. #7
    Codice PHP:
    $stringa serialize($array);
    ...
    $array unserialize($stringa); 
    http://php.net/manual/it/function.serialize.php
    http://php.net/manual/it/function.unserialize.php

  8. #8
    stai usando una classe per fare questo? :master:
    codice:
    echo str_replace(array_keys($t_array), $t_array, file_get_contents("prova.html"));
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    379
    Andr3a ieri ho letto il tuo curriculum vicino a te mi sento anora meno di una nullità

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.