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

    Passare campo da comparare alla funzione usort

    ciao!

    sto usando la funzione usort per ordinare un array multidimensionale (array creato da query):
    codice:
    function cmp($a, $b) {
        if ($a["ft_data"] == $b["ft_data"]) {
            return 0;
        }
        return ($a["ft_data"] > $b["ft_data"]) ? -1 : 1;
    }
    
    usort($queryFatture, "cmp");
    se io volessi anche passare il campo da comparare, in modo da poter riusare quella funzione, come dovrei fare??

  2. #2
    Utente di HTML.it L'avatar di stoneweb
    Registrato dal
    Jul 2016
    residenza
    Torino
    Messaggi
    162
    Potresti usare una closure tipo:

    codice:
    usort($arr, function ($a, $b) use ($field) {
        if ($a[$field] == $b[$field]) {
            return 0;
        }
        return ($a[$field] > $b[$field]) ? -1 : 1;
    });
    In alternativa diventa un po' più complesso e puoi seguire direttamente questa risposta su Stackoverflow:
    https://stackoverflow.com/a/8231155/5197623
    Work hard. Code harder.

  3. #3
    non avevo pensato alle closure in effetti.
    grazie!!

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