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

    Rimuovere duplicati da array multidimensionale per chiave e valore

    ciao!

    da una estrazione, che non posso modificare, mi arrivano questi valori:
    codice:
    array(13) {
        [
            0
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(13) "alimentazione"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(1) "8"
        [
                "sum_cnt"
            ]=>
        string(1) "2"
        }
      [
            1
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(13) "alimentazione"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "17"
        [
                "sum_cnt"
            ]=>
        string(1) "2"
        }
      [
            2
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(13) "alimentazione"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "25"
        [
                "sum_cnt"
            ]=>
        string(1) "2"
        }
      [
            3
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(1) "1"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            4
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(1) "3"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            5
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(1) "8"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            6
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(1) "9"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            7
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "14"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            8
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "16"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            9
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "17"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            10
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "18"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            11
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "22"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
      [
            12
        ]=>
      array(4) {
            [
                "cnt_alias"
            ]=>
        string(8) "business"
        [
                "cnt_tipo"
            ]=>
        string(9) "categoria"
        [
                "wa_webinar"
            ]=>
        string(2) "24"
        [
                "sum_cnt"
            ]=>
        string(1) "4"
        }
    }
    come vedete i records sono duplicati, ma i valori sono giusti.
    quindi dovrei levare i records duplicati.
    in sostanza, in questo caso, ne dovrei vedere solo due di records, uno per alimentazione ed uno per business.

    come faccio a fare questa operazione, non sapendo a priori i valori duplicati?

  2. #2

  3. #3
    quel post l'ho già visto, ma sinceramente non sono riuscito a far funzionare nulla.

    ad esempio questo:
    codice:
    array_unique($query, SORT_REGULAR);
    foreach ($query as $var) {
    .........
    }
    idem questo:
    codice:
    $query = array_map("unserialize", array_unique(array_map("serialize", $query)));
    foreach ($query as $var) {
    .........
    }
    o questo:
    codice:
    function array_unique_multidimensional($input) {
        $serialized = array_map('serialize', $input);
        $unique = array_unique($serialized);
        return array_intersect_key($input, $unique);
    }
    
    $qa = array_unique_multidimensional($query);
    foreach ($qa as $var) {
        $item = array(
            'categoria' => $var['cnt_alias'],
            'counter' => $var['sum_cnt']
        );
        array_push($resArray["counter"], $item);
    }

  4. #4
    o anche questo:
    codice:
    $temp = array_unique(array_column($query, 'categoria'));
    $qa = array_intersect_key($query, $temp);
    
    foreach ($qa as $var) {
    ........
    }
    qui mi esce proprio un array vuoto

  5. #5
    allora, non potendo lavorare su db direttamente, stavo lavorando su un set di dati fittizio.

    poi quando ho messo in produzione nn mi hanno detto di aver cambiato nome ad una colonna, che è quella che usavo per eliminare i duplicati.

    ergo, le soluzioni funzionano, me sono le informazioni corrette che non arrivano......


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 © 2020 vBulletin Solutions, Inc. All rights reserved.