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

    difficile confronto tra array di tipo diverso

    Non riesco a fare il confronto tra questi due array
    Codice PHP:
    $primo = array('uno' => array(1,2,3),
                   
    'due' => array(4,5,6),
                   
    'tre' => array(7,8,9) );
                   
    $secondo = array('uno' => 2'tre' => 8); 
    Io voglio mettere tutto il contenuto di $primo in una tabella e mettere in grassetto gli elementi comuni

    1 2 3
    4 5 6
    7 8 9
    La tabella l'ho creata così
    Codice PHP:
    echo "<table>";                
    foreach(
    $primo as $valori) {
    echo 
    "<tr>";
    foreach(
    $valori as $valore) { echo "<td>$valore</td>"; }
    echo 
    "</tr>"
    }
    echo 
    "</table>"
    ma non so come confrontare i due array. Mi potreste aiutare?
    Grazie.

  2. #2
    Codice PHP:

    echo "<table>";
                     
    foreach(
    $primo as $valori) { 
      echo 
    "<tr>"
     
       foreach(
    $valori as $valore) {
     
           if(
    in_array($valore$secondo)) { 
                echo 
    "<td>[b]$valore[/b]</td>"; }
                else { echo 
    "<td>$valore</td>"; }

     echo 
    "</tr>"
    }
    echo 
    "</table>"


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    Codice PHP:

    echo "<table>";
                     
    foreach(
    $primo as $valori) { 
      echo 
    "<tr>"
     
       foreach(
    $valori as $valore) {
     
           if(
    in_array($valore$secondo)) { 
                echo 
    "<td>[b]$valore[/b]</td>"; }
                else { echo 
    "<td>$valore</td>"; }

     echo 
    "</tr>"
    }
    echo 
    "</table>"

    Ti ringrazio. Sei sempre molto gentile.
    Scusami, avevo dimenticato di scrivere un altro problema e ho usato un esempio sbagliato.
    Avevo già provato con in_array però se ad esempio il mio array è questo
    Codice PHP:
    $primo = array('uno' => array(1,2,3),
                   
    'due' => array(3,5,8),
                   
    'tre' => array(7,8,9) ); 
    allora mi vengono messi in grassetto entrambi gli 8. Quello che vorrei fare è proprio poter confrontare i valori numerici però soltanto con le chiavi corrispondenti. In pratica siccome la chiave due di $primo non è presente nell'array $secondo, la formattazione non deve essere messa.
    Grazie per la pazienza e scusa ancora per la mia dimenticanza.

  4. #4

    ..........

    Ciao.
    Dai un occhio a array_intersect
    e
    array_intersect_assoc

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5

    Re: ..........

    Originariamente inviato da whisher
    Ciao.
    Dai un occhio a array_intersect
    e
    array_intersect_assoc

    ciao whisher. grazie per la risposta. ho già visto quelle due funzioni (è da ieri che cerco di risolvere questo problema) ma non ci riesco. ho provato anche con i vari array_keys e array_values per fare il confronto ma niente.

  6. #6

    Re: Re: ..........

    Originariamente inviato da andrea_kobe
    ciao whisher. grazie per la risposta. ho già visto quelle due funzioni (è da ieri che cerco di risolvere questo problema) ma non ci riesco. ho provato anche con i vari array_keys e array_values per fare il confronto ma niente.
    scusa se non ti ho risposto prima, ma la linea adsl e' andata per una oretta a meretrici...

    Devi solo estrarre la prima chiave del primo array e poi confrontare nel secondo array se esiste oppure no la stessa chiave...

    Codice PHP:

    echo "<table>";                 
    foreach(
    $primo as $key => $valori) { 

        foreach(
    $primo[$key] as $valore) {
     
           if(isset(
    $secondo[$key]) AND in_array($valore$secondo)) { 
                echo 
    "<td>[b]$valore[/b]</td>"; }
                else { echo 
    "<td>$valore</td>"; }

     echo 
    "</tr>"
    }
    echo 
    "</table>"
    spero sia corretto.... non l'ho provato....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Ci manca solo che ti debba scusare, già che stai cercando di aiutarmi.
    Purtroppo ancora non ci siamo.

    Array di prova.
    Codice PHP:
    $primo = array('uno' => array(1,2,3),
                   
    'due' => array(3,5,8),
                   
    'tre' => array(7,8,9) );
                   
    $secondo = array('uno' => 1'due' => 3'tre' => 8); 
    risultato atteso
    1 2 3
    3 5 8
    7 8 9

    risultato ottenuto
    1 2 3
    3 5 8
    7 8 9

  8. #8
    La prossima come sara? :master:

    Codice PHP:

    echo "<table>";                  
    foreach(
    $primo as $key => $valori) { 

        foreach(
    $primo[$key] as $valore) { 

           if(isset(
    $secondo[$key]) AND $secondo[$key] == $valore) { 
            
                  echo 
    "<td>[b]$valore[/b]</td>"; } 
                  else { echo 
    "<td>$valore</td>"; } 
                
        } 
    echo 
    "</tr>"

    echo 
    "</table>"


    edit... altre variazioni per domani...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Wow. E' perfetta.
    Nella versione che avevi postato prima di modificare il tuo messaggio avevo fatto una piccola modifica perchè in un array come questo
    $secondo = array('uno' => 3, 'tre' => 8);

    la riga che eventualmente non presentava la chiave non veniva stampata (colpa mia ovviamente che non mi so spiegare). Questa invece funziona benissimo già di suo. Ti ringrazio davvero tanto, non ci sarei mai riuscito da solo. Sei davvero molto bravo.
    Grazie ancora.

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.