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

    cicli array e valori doppi

    Buongiorno a tutti,

    è possibile in qualche modo controllare un array e se un valore è presente una sola volta ricavare 1 se è presente più volte ricavare il n. di volte che è presente?

    Grazie

    SK

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    ciao, certo!

    Codice PHP:

    $ar 
    = array ( 12111333224);

    $count count($ar);

    for (
    $i 0$i $count$i++) {
        
    $num 0;
        if (
    $ar[$i] != null) {

            
    $compare $ar[$i];
            for (
    $j 0$j $count$j++) {

                if (
    $ar[$j] != null) {
                    if (
    $compare == $ar[$j]) {
                        
    $ar[$j] = null;
                        
    $num++;
                    }
                }

            }
            if (
    $num 1) echo $compare " compare " $num " volte.
    "
    ;
            else if (
    $num == 1) echo $compare " compare una volta.
    "
    ;

            
        }


  3. #3
    Grazie ci ero appena riuscito così:

    codice:
    $new_array=array_count_values($array);
    
    while (list ($key2, $val) = each ($new_array)) {
    echo $key2." - ".$val ."
    ";
    }
    Ma mi sono accorto che non risolvo comunque il mio problema

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    beh questi codici risolvono il problema che hai esposto

    qual'è il tuo problema?

  5. #5
    Originariamente inviato da diabolikk
    beh questi codici risolvono il problema che hai esposto

    qual'è il tuo problema?
    Vediamo se riesco a spiegarlo

    Facciamo conto di avere 4 array composte così:

    codice:
    $array_0 = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10');
    
    $array_1 = array('2010-01-01', '2010-01-10', '2010-01-15');
    
    $array_2 = array('2010-01-01', '2010-01-10', 2010-01-10', '2010-01-15);
    
    $array_3 = array('10' ,'20', '6', '8');
    Ora io devo ciclare il secondo array, quindi $array_1 e fin qui nessun problema basta fare un foreach e la cosa è risolta.
    Il problema sta nel fatto, che come vedi, nel terzo array (molto semplificato anche questo), ci possono essere valori uguali, 2, 3 , 4 ,5, 100 volte.

    Ora nel foreach usato per ciclare $array_1, al suo interno io devo o meglio dovrei , cercare le corrispondeze......come vedi $array_2 e $array_3 contengono lo stesso numero di chiavi ovvero se estraggo $array_2[1] prendo il suo valore da $array_3[1], quindi avrò: "2010-01-10 => 20", e anche fin qui tutto bene, tanto per capirci in codice:

    codice:
    foreach($array_0 as $valore_0){
    
        foreach($array_1 as $valore_1){
    
            for($i=0; $i!=count($array_2); $i++){
    
                if($array_2[$i]==$valore_1){
    
                    if($array_3[$i]==$valore_0){
    
                        echo "Trovata corrispondenza: ".$valore." => ".$array_2[$i]." => ".$array_3[$i]."
    ";
    
                    }else{
    
                        echo "Non trovata
    ";
    
                    }
    
                }
    
            }
    
        }
    
    }
    e così funziona se non ho duplicati, perche io devo incasellare i valori in una tabella html, sotto a ogni data corrispondente.

    Usando i valori che ho messo ad esempio negli array, mi ritrovo che salta una cella, ma giustamente, controlla il primo valore, trova la corrispondenza delle due date, e prende il corrispettivo valore da $array_3, al secondo ciclo di $array_1 trova il primo '2010-01-10' quindi trova la corrispondenza di data, ma non di valore tra $array_0 e $array_3 e quindi passa al terzo ciclo e li trova corrispondenza come al primo ciclo, quello che serve a me è che se trova corrispondenza di data ma non di valore, non faccia nulla, come se non esistesse, spero di essermi spiegato, ma è abbastanza incasinato, anche perchè qui ho fatto un esempio per semplificare il reale codice.


  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    non ho capito proprio al 100%, quindi più che soluzioni posso farti delle proposte.

    hai pensato a cercare le corrispondenze di array_1 in array_2 salvandoti tutte le posizioni dell'array due in cui il valore di array_1 ritorna?
    esempio:
    Codice PHP:
    $array_2 = array('2010-01-01''2010-01-10''2010-01-10''2010-01-15');

    print_r(array_keys($array_2"2010-01-10")); 
    così ottieni un array composto da due elementi che conterrà i valori 1 e 2
    Array
    (
    [0] => 1
    [1] => 2

    )

  7. #7
    Originariamente inviato da diabolikk
    non ho capito proprio al 100%, quindi più che soluzioni posso farti delle proposte.

    hai pensato a cercare le corrispondenze di array_1 in array_2 salvandoti tutte le posizioni dell'array due in cui il valore di array_1 ritorna?
    esempio:
    Codice PHP:
    $array_2 = array('2010-01-01''2010-01-10''2010-01-10''2010-01-15');

    print_r(array_keys($array_2"2010-01-10")); 
    così ottieni un array composto da due elementi che conterrà i valori 1 e 2
    Array
    (
    [0] => 1
    [1] => 2

    )
    Continuo a non uscirne.... eppure sono sicuro che è una cavolata immane...

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.