Visualizzazione risultati 1 fino 10 di 10

Discussione: Contare i valori duplicati in array

  1. #1
    Guest

    Predefinito Contare i valori duplicati in array

    Ho queste array (è un print_r)
    Codice PHP:
    Array
    (
    [
    0] => rosa
    [1] => rosa
    [2] => bianco
    [3] => bianco
    [4] => prova2
    [5] => prova2
    [6] => prova2
    [7] => prova 1
    )
    Adesso voglio sapere quante volte si ripete bianco, quante volte prova2, prova 1 e quante volte rosa.
    ps i valori possono cambiare.
    Ultima modifica di svacant : 19-11-2009 alle ore 12.35.25

  2. #2
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Domandina: A che serve avere array di un unico elemento?

    Se conosci a priori la struttura (ovvero 3 livelli di array) puoi comodamente annidare 3 foreach. Altrimenti usa una funzione ricorsiva.
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  3. #3
    Guest

    Predefinito

    Sì adesso ho cambiato la situazione se vedi l'edit.

    ps dimentica il resto, parti da questa situazione.

    edit risolto tra poco vi posto la soluzione

    Soluzione

    Codice PHP:
    function array_duplicate_count($array,$value) {
    $a = 0;
    foreach(
    $array as $key => $val)
    if (
    $val==$value) $a++;
    return
    $a;
    }
    Ultima modifica di svacant : 19-11-2009 alle ore 12.50.55

  4. #4
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Ok. Usa un array che ha per chiavi gli elementi da cercare:
    Codice PHP:
    foreach($array as $a)
    $elem[$a]++;
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,260

    Predefinito

    cos'aveva di male array_count_values() ?

  6. #6
    Guest

    Predefinito

    Sì ottimo anche ma in questo caso mi ritorna un array, che poi dovrei usare per avere sempre un integer, dato che ho la necessità di fare dei calcoli matematici.
    E' uguale dai l'importante che si sia risolto, la tua soluzione è più semplice ma poi dipende che devi fare, alla fine ti tocca iterare uguale...

  7. #7
    Data registrazione
    04-09-2009
    Messaggi
    183

    Predefinito

    Citazione Originalmente inviato da dreadnaut Visualizza messaggio
    cos'aveva di male array_count_values() ?
    uh non sapevo che esistesse una funzione del genere!

    svacant, puoi scrivere foreach($array as $val) visto che $key non la usi!
    Age Of Empires GIF Creator & Archive
    New! Blog informatico di scripting PHP avanzato
    Vuoi giocare online a Age of Empires The Conquerors? -> Usa Voobly !! (MSN Zone non lo supporta più dal 19 giugno 2006)
    Il mio clan di The Conquerors -> Rifugio dei Conquerors
    Il mio stato su Xfire Live Video -> Unreal Tournament 2004
    Facebook MMORPG

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,260

    Predefinito

    ricorda che le funzioni predefinite sono sempre più veloci di quello che puoi scrivere, quindi può convenirti usa array_count_values() in ogni caso. Soprattutto se devi contare più di un valore - visiti l'array una volta sola, ed hai tutti i risultati già pronti.

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da ageofempiresgif Visualizza messaggio
    uh non sapevo che esistesse una funzione del genere!

    svacant, puoi scrivere foreach($array as $val) visto che $key non la usi!
    Sì beh è un po' scopiazzato, capita se hai tempi stretti ;)

    @Dreadnaut: non c'è una grossa mole di dati, quindi la differenza non è molta. :D
    Ultima modifica di svacant : 19-11-2009 alle ore 14.06.21

  10. #10
    Guest

    Predefinito

    Potrei sapere per cosa dovresti contare i valori uguali?

Regole di scrittura

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