Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Non posso farti un esempio partendo dal tuo codice che è errato e non può mai produrre l'output che indichi anche perchè $el_lissta1 e 2 contengono un array. Però, leggendo le combinazioni "topicX topicY" mi sembra di capire che vuoi produrre tutte le disposizioni senza ripetizione partendo da un array che al suo inteno comprende delle liste di valori o qulacosa del genere.

    A scopo esemplificativo ti posto il seguente codice:

    Codice PHP:
    <?php

    $data 
    = Array(
        
    => Array(
            
    => 45,
            
    => 46,
            
    => 47),
        
    => Array(
            
    => 48,
            
    => 49,
            
    => 50),
        
    => Array(
            
    => 51,
            
    => 52,
            
    => 53),
        
    => Array(
            
    => 54,
            
    => 55,
            
    => 56)
    );

    function 
    calcola(&$array, &$testo) {
        static 
    $stack = array(), $profondita 0;
        if (isset(
    $array[$profondita])) {
            foreach (
    $array[$profondita] as $value) {
                
    array_push($stack$value);
                
    $profondita++;
                
    calcola($array$testo);
                
    $profondita--;
                
    array_pop($stack);
            }
        } else {
            if (!empty(
    $stack)) {
                foreach (
    $stack as $value)
                    
    $testo .= $value '-';
                
    $testo substr($testo0strlen($testo) - 1) . '<br>';
            }
        }
    }

    calcola($data$testo);
    echo 
    $testo;
    ?>
    che produce il seguente output:
    codice:
    45-48-51-54
    45-48-51-55
    45-48-51-56
    45-48-52-54
    45-48-52-55
    45-48-52-56
    45-48-53-54
    45-48-53-55
    45-48-53-56
    45-49-51-54
    45-49-51-55
    45-49-51-56
    45-49-52-54
    45-49-52-55
    45-49-52-56
    45-49-53-54
    45-49-53-55
    45-49-53-56
    45-50-51-54
    45-50-51-55
    45-50-51-56
    45-50-52-54
    45-50-52-55
    45-50-52-56
    45-50-53-54
    45-50-53-55
    45-50-53-56
    46-48-51-54
    46-48-51-55
    46-48-51-56
    46-48-52-54
    46-48-52-55
    46-48-52-56
    46-48-53-54
    46-48-53-55
    46-48-53-56
    46-49-51-54
    46-49-51-55
    46-49-51-56
    46-49-52-54
    46-49-52-55
    46-49-52-56
    46-49-53-54
    46-49-53-55
    46-49-53-56
    46-50-51-54
    46-50-51-55
    46-50-51-56
    46-50-52-54
    46-50-52-55
    46-50-52-56
    46-50-53-54
    46-50-53-55
    46-50-53-56
    47-48-51-54
    47-48-51-55
    47-48-51-56
    47-48-52-54
    47-48-52-55
    47-48-52-56
    47-48-53-54
    47-48-53-55
    47-48-53-56
    47-49-51-54
    47-49-51-55
    47-49-51-56
    47-49-52-54
    47-49-52-55
    47-49-52-56
    47-49-53-54
    47-49-53-55
    47-49-53-56
    47-50-51-54
    47-50-51-55
    47-50-51-56
    47-50-52-54
    47-50-52-55
    47-50-52-56
    47-50-53-54
    47-50-53-55
    47-50-53-56
    La ricorsività permette di annidare i foreach indipendentemente dal numero di liste, lo stack serve a memorizzare i valori che compongono la tupla e a recuperarli nel momento in cui si raggiunge la profondità massima (ossia è stato estratto un valore da ogni lista) per ripartire con la tupla successiva.

    Questo è un metodo ricorsivo. Ovviamente può essere riprodotto anche in modo iterativo.



    Edit: Ho visto ora che prendi in considerazione l'elemento topic per produrre la stringa. L'esempio che ti ho postato è una possibile soluzione.
    Ultima modifica di Grino; 16-05-2014 a 04:07
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

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.