Come configurare smartphone e PC. Portale informativo
  • casa
  • Consigli
  • Ordinamento alfabetico dell'array php. Ordinare un array in php

Ordinamento alfabetico dell'array php. Ordinare un array in php

Ultimo aggiornamento: 1.11.2015

Is_array funzione

La funzione is_array() controlla se una variabile è un array e, se lo è, restituisce true, altrimenti restituisce false. Ad esempio:

$ isar = is_array ($ tecnica); echo ($ isar == true)? "questo è un array": "questo non è un array";

Conteggio/dimensione delle funzioni

Le funzioni count() e sizeof() ottengono il numero di elementi nell'array:

$ numero = conteggio ($ tecnica); // uguale a // $ numero = sizeof ($ technics); echo "La tecnica dell'array contiene $ numero di elementi";

Funzioni di riproduzione casuale

La funzione shuffle mescola casualmente gli elementi degli array:

$ os = array ("Windows 95", "Windows XP", "Windows Vista", "Windows 7", "Windows 8", "Windows 10"); casuale ($ os); print_r ($ os); // una delle possibili opzioni // Array (=> Windows 95 => Windows 7 => Windows Vista => Windows XP => Windows 10 => Windows 8)

Funzioni compatte

La funzione compact permette di creare un array associativo da un insieme di variabili, dove le chiavi saranno i nomi delle variabili stesse:

Mela II => Mela => 1978)?>

La funzione compatta riceve un insieme di variabili tra parentesi. Ogni variabile è racchiusa tra una virgoletta $ senza segno. Il risultato della funzione è un nuovo array.

Ordinamento di array

Esistono due tipi di ordinamento in PHP: ordinamento alfabetico per stringhe e ordinamento numerico crescente/decrescente. Se i valori da ordinare sono stringhe, vengono ordinati alfabeticamente, se numeri, vengono ordinati in ordine crescente di numeri. PHP sceglie il tipo di ordinamento per impostazione predefinita.

La funzione asort viene utilizzata per ordinare in ordine crescente:

"Lenovo IdeaTab A3500", "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air"); assortire ($ compresse); eco "

    "; foreach ($ compresse come $ chiave => $ valore) (echo"
  • $ chiave: $ valore
  • ";) eco"
"; ?>

In questo caso, i valori dell'array rappresentano stringhe, quindi PHP sceglierà di ordinare alfabeticamente. Tuttavia, utilizzando un parametro aggiuntivo, possiamo indicare esplicitamente all'interprete PHP il tipo di ordinamento. Questo parametro può assumere tre valori:

    SORT_REGULAR: selezione automatica dell'ordinamento

    SORT_NUMERIC: ordinamento numerico

    SORT_STRING: ordina in ordine alfabetico

Indichiamo esplicitamente il tipo di ordinamento:

Ordina ($ compresse, SORT_STRING);

Per ordinare un array in ordine inverso, usa la funzione arsort:

Arsort ($ compresse);

Ordina per tasti

La funzione asort ordina in base ai valori degli elementi, ma esiste anche l'ordinamento per chiavi. È rappresentato dalla funzione ksort:

Ksort ($ compresse, SORT_STRING);

L'ordinamento per tasti in ordine inverso viene eseguito dalla funzione krsort():

Krsort ($ compresse);

smistamento naturale

Sebbene le funzioni di ordinamento sopra descritte svolgano un ottimo lavoro, le loro capacità non sono ancora sufficienti. Ad esempio, ordiniamo il seguente array in ordine crescente:

Windows 10 => Windows 7 => Windows 8)?>

Poiché i valori rappresentano stringhe, PHP ordina in ordine alfabetico. Tuttavia, questo ordinamento non fa distinzione tra maiuscole e minuscole e il numero. Pertanto, il valore "Windows 10" andrà all'inizio e non alla fine, come avrebbe dovuto essere. E per risolvere questo problema, PHP ha una funzione natsort() che esegue l'ordinamento naturale:

Windows 7 => Windows 8 => Windows 10)?>

Se abbiamo anche bisogno che l'ordinamento non faccia distinzione tra maiuscole e minuscole, possiamo usare la funzione natcasesort().

L'ordinamento è una delle routine più importanti quando si lavora con gli array. Per rendersi conto della sua importanza, è sufficiente ricordare azioni come, ad esempio, l'ordinamento dei film in ordine alfabetico o l'ordinamento dei prezzi in ordine crescente o decrescente, ecc. D'accordo, azioni molto comuni per varie applicazioni! Oggi parleremo di come ordinare gli elementi dell'array in base a condizioni specificate.

Quindi, l'ordinamento semplifica il lavoro con gli array. Quando gli elementi sono ordinati, è più facile trovarli ed eseguire con essi le azioni necessarie, ad esempio quelle di cui ho scritto poco sopra. Tutto dipende dal compito che stai affrontando.

I compiti possono essere diversi, ma gli strumenti che utilizzeremo rimarranno standard. Questi strumenti sono funzioni speciali utilizzate per ordinare gli elementi di un array.

Ci sono molte di queste funzioni in php e quale usare dipenderà di nuovo dall'attività specifica, nonché dal fatto che il tuo array sia un array associativo o un array di elenchi.

Facciamo un esempio di queste funzioni e vediamo come funzionano.

Ordinamento di matrici-elenchi in ordine alfabetico e inverso

Per prima cosa, facciamo conoscenza con una funzione abbastanza semplice e diretta. ordinare ().

Ci permetterà di ordinare gli elementi dell'array in ordine crescente o, se questi elementi sono stringhe, in ordine alfabetico.

La sua applicazione è abbastanza semplice. Per testare questa funzione, dobbiamo solo dichiarare un array, quindi utilizzare la funzione per ordinare i suoi elementi e visualizzare il risultato sullo schermo per vedere cosa succede.

$ Massa = array ("Katya", "Anya", "Lena", "Andrey"); ordinamento ($ Massa); print_r ($ Massa); ?>

E il risultato sarà il seguente. Come puoi vedere nello screenshot a destra, gli elementi sono ordinati in ordine alfabetico. Se invece di elementi stringa abbiamo numeri, questa funzione ordinerà anche i numeri in ordine crescente. Puoi verificarlo tu stesso.

C'è anche una funzione che fa l'opposto, cioè ordina gli elementi di un array in ordine decrescente o in ordine alfabetico inverso.

Questa funzione è chiamata rsort ()... Funziona come segue:

$ Massa = array ("Katya", "Anya", "Lena", "Andrey"); rsort ($ Massa); print_r ($ Massa); ?>

Come puoi vedere, ora il risultato è completamente opposto. Gli elementi dell'array sono ordinati in ordine decrescente, che in questo caso significa in ordine alfabetico inverso.

Penso che con queste funzioni tutto sia molto chiaro. Mettili alla prova con i tuoi array e non avrai domande.

Ordinamento di array associativi

Va tutto bene, tuttavia, con gli array associativi, non potremo più utilizzare queste funzioni, poiché interrompono la connessione tra il valore e la chiave dell'array. Pertanto, abbiamo bisogno di familiarizzare con alcune funzioni in più che ci consentiranno di ordinare gli array associativi.

Come sappiamo, gli array associativi hanno chiavi e valori. Pertanto, l'ordinamento può essere eseguito per chiavi o per valori.

Iniziamo ordinando per valore.

Per ordinare alfabeticamente i valori di un array associativo, utilizzeremo la funzione assortire ().

Per fare ciò, creare prima un array associativo, applicare una funzione e visualizzare il risultato sullo schermo.

$ Mass ["uno"] = "Katya"; $ Mass ["due"] = "Boris"; $ Mass ["tre"] = "Anya"; $ Massa ["quattro"] = "Rita"; assortire ($ Massa); print_r ($ Massa); ?>

Come puoi vedere, i valori dell'array associativo sono ordinati alfabeticamente, tuttavia, la loro relazione con le chiavi è preservata.

Funziona allo stesso modo e la funzione arsor (), tranne per il fatto che ordina i valori dell'array associativo in ordine inverso.

$ Mass ["uno"] = "Katya"; $ Mass ["due"] = "Boris"; $ Mass ["tre"] = "Anya"; $ Massa ["quattro"] = "Rita"; arsort ($ Massa); print_r ($ Massa); ?>

Anche in questo caso, possiamo vedere che i valori degli elementi dell'array mantengono la loro associazione con le chiavi, ma sono ordinati in ordine inverso.

Possiamo ordinare lo stesso array associativo per chiavi.

Come probabilmente hai già intuito, questo può essere fatto in ordine alfabetico o inverso.

Per ordinare un array per chiavi in ​​ordine alfabetico, abbiamo bisogno della funzione ksort ().

$ Mass ["uno"] = "Katya"; $ Mass ["due"] = "Boris"; $ Mass ["tre"] = "Anya"; $ Massa ["quattro"] = "Rita"; ksort ($ Massa); print_r ($ Massa); ?>

L'array è ordinato alfabeticamente per chiavi.

Per ordinare un array in base alle sue chiavi in ​​ordine inverso, utilizzare la funzione krsort ().

$ Mass ["uno"] = "Katya"; $ Mass ["due"] = "Boris"; $ Mass ["tre"] = "Anya"; $ Massa ["quattro"] = "Rita"; krsort ($ Massa); print_r ($ Massa); ?>

Penso che tutto sia chiaro dallo screenshot.

Ordinamento personalizzato

Possiamo anche impostare il nostro ordinamento, ovvero creare un ordinamento personalizzato.

Per questo, ci sono anche funzioni speciali in php.

Per l'ordinamento personalizzato degli elenchi, esiste una funzione usort ().

Ci vorranno due argomenti. Il primo argomento è il nostro array; il secondo argomento conterrà il nome della funzione che confronta i due elementi.

La funzione di confronto accetterà due variabili e dovrà restituire uno dei valori:

1 - se il primo elemento di confronto è maggiore del secondo;

-1 - se il secondo è maggiore del primo;

0 - se gli elementi sono uguali.

Così, ad esempio, possiamo ordinare gli elementi di un array in ordine crescente di lunghezza.

Per fare ciò, dichiariamo prima l'array stesso, che conterrà elementi stringa di varie lunghezze.

Successivamente, utilizzeremo la funzione di ordinamento personalizzato usort ()... Lo passeremo come argomenti: il nome del nostro array e il nome della funzione che abbiamo creato per confrontare gli elementi.

Dopo tutto questo, possiamo stampare il risultato sullo schermo per assicurarci che i nostri elementi siano ordinati in ordine crescente di lunghezza.

$ Massa = array ("Andrey", "Yana", "Katya"); funzione check_length ($ str1, $ str2) ($ length1 = strlen ($ str1); $ length2 = strlen ($ str2); if ($ length1 == $ length2): return 0; elseif ($ length1

Riceveremo il seguente risultato. Gli elementi del nostro array sono ordinati in ordine di lunghezza crescente.

Possiamo anche creare un ordinamento personalizzato dell'array associativo in base alle sue chiavi. Per questo abbiamo bisogno della funzione Regno Unito () e l'array associativo stesso.

Lasciamo invariata la funzione personalizzata, ovvero confrontiamo la lunghezza delle chiavi.

Le chiavi degli elementi dell'array sono ordinate in ordine crescente di lunghezza.

E inoltre possiamo creare un ordinamento personalizzato dell'array associativo in base ai valori dei suoi elementi. La funzione ci aiuterà in questo. uasort ().

Il principio è sempre lo stesso.

$ Mass ["uno"] = "yana"; $ Mass ["due"] = "andrey"; $ Mass ["tre"] = "Katya"; funzione check_length ($ str1, $ str2) ($ length1 = strlen ($ str1); $ length2 = strlen ($ str2); if ($ length1 == $ length2): return 0; elseif ($ length1

L'array è ora ordinato aumentando la lunghezza dei suoi valori.

Naturalmente, la funzione definita dall'utente può essere diversa, ad esempio può trasmettere valori al caso generale o fare qualcos'altro.

Per avere una buona comprensione di come funziona l'ordinamento personalizzato, è necessario esercitarsi e provare a scrivere la propria funzione di confronto.

Tuttavia, ora penso che tu abbia una comprensione completa di come è possibile ordinare gli elementi di un array e come utilizzare questi elementi ordinati.

Esercitati, scrivi i tuoi commenti e condividi l'articolo con i tuoi amici utilizzando i pulsanti dei social media.

Se non sei ancora iscritto agli aggiornamenti del blog, iscriviti. Il modulo di iscrizione è sotto.

Anna Kotelnikova era con te. Ci vediamo nei seguenti articoli.

Quando si lavora su molti siti, si incontra spesso la questione dell'ordinamento dei dati dell'array in ordine alfabetico. Molte persone scrivono array aggiuntivi per questo, confrontano tabelle di grandi dimensioni e iterano su ciascun nome ... Questa opzione non è la migliore, anche se la prenderemo in considerazione. In questo articolo vorrei offrire il percorso più semplice e breve, che, dopo un'attenta lettura dei manuali, si può trovare nella documentazione.

Matrice alfabetica PHP

Il metodo è abbastanza semplice e consiste in due passaggi: impostare la localizzazione (setlocal) e ordinare direttamente l'array. Diamo un'occhiata a un esempio con commenti.

Codice PHP

setlocale (LC_ALL, "Russian_Russia.1251"); // imposta la localizzazione per le lettere russe

// esempio di un array in cui le parole NON sono in ordine
$ esempio = array ("banca", "Boris", "vista", "profilo", "cacciatore", "Fedor", "moglie", "voce");

Natcasesort ($ esempio, SORT_LOCALE_STRING); // ordina l'array senza distinzione tra maiuscole e minuscole
// PER LE RELAZIONI DI CASO, usa sort invece di natcasesort

// mostra il risultato
foreach ($ esempio come $ chiave => $ valore) (
echo "$ valore" (! LANG :; // mostra solo parole, nessun indice
}
?>

Dimostrazione Scarica le fonti
Nella demo puoi vedere come funziona lo script. Se lo desideri, puoi anche scaricare l'archivio con il file.

Se il tuo server non è su Windows, dovrai installare altre versioni locali o più contemporaneamente:

(LC_ALL,"ru_RU.CP1251", "rus_RUS.CP1251", "Russian_Russia.1251");!}
// Stampa ru_RU.CP1251 per FreeBSD
// Output rus_RUS.CP1251 per Linux
// Output Russian_Russia.1251 per Windows

Risponderò in anticipo a una delle domande: le impostazioni internazionali per l'Ucraina in PHP sono simili a questa:


Come posso impostare le impostazioni internazionali per altre codifiche in PHP?

// Installa le versioni locali per Windows

// Codifica Windows-1251
setlocale (LC_ALL, "Russian_Russia.1251");

// Codifica KOI8-R
setlocale (LC_ALL, "Russian_Russia.20866");

// Codifica UTF-8 (usare con cautela)
setlocale (LC_ALL, "Russian_Russia.65001");
?>

Secondo modo per organizzare l'array in ordine alfabetico PHP

Se questo metodo non ti soddisfa e vuoi andare nel modo più duro, crea un array del seguente modulo:

Codice PHP

=> a
=> b
=> in
=> r
=> d
=> e
=>
=> f
=> s
=> e
=> questo
=> a
=> l
=> m
=> n
=> o
=> n
=> p
=> con
=> t
=> si
=> f
=> x
=> c
=> h
=> w
=> tu
=> b
=> s
=> b
=> uh
=> tu
=> io
E scorrere il secondo array dalla prima lettera.
La prima lettera di qualsiasi elemento dell'array viene calcolata come segue:

Codice PHP

$ città = "Mosca"; // per esempio elemento con indice 1

$ prima_lettera = mb_substr ($ città, 0,1, "UTF-8"); // prendi la lettera "M"
Poiché lavoriamo con lettere russe (codifica multibyte), è meglio usare la funzione mb_substr, e alla fine è meglio specificare la codifica dei dati della variabile o dell'array, nel nostro caso UTF-8.

Grazie per l'attenzione! Spero che le informazioni siano state utili. Se avete domande, scrivete nei commenti.

E parla con te delle varie "chicche" di cui potresti aver bisogno quando finalizzi soluzioni già pronte.

E uno di questi, che personalmente devo incontrare abbastanza spesso al lavoro, è ordinare un arrayphp.

Incontri così frequenti erano dovuti al fatto che, come dimostra la pratica, le persone amano di tanto in tanto, tanto per cambiare, cambiare la sequenza di visualizzazione degli oggetti sul proprio sito Web, che si tratti di prodotti in un negozio online, post degli utenti sul forum o blocchi di informazioni sui siti di biglietti da visita.

Per i principianti, ti ricorderò solo le disposizioni principali nella lingua più comprensibile. Pertanto, se non ti consideri tale, puoi andare direttamente agli esempi di attività e modi per risolverli.

Un po' di teoria sugli array php

PHP è un linguaggio di programmazione lato server. Lato server, perché gli script che vengono eseguiti dagli utenti tramite un'interfaccia web (browser Internet) vengono archiviati ed eseguiti sul server.

Gli script PHP sono nascosti alla vista dell'utente medio. Nella finestra del tuo browser, vedi solo i risultati della loro esecuzione.

Un array in programmazione è una raccolta di alcuni dati. Sono costituiti da elementi dell'array, che sono coppie [indice] => [valore].

Gli array possono essere statici, dinamici, eterogenei, ecc. (un'intera scienza) 🙂 Per noi, per lavorare con loro, la classificazione in unidimensionale e multidimensionale è abbastanza.

Per capire la differenza tra loro, è sufficiente dare una descrizione della loro struttura.

Array php unidimensionale:

Matrice (=> 1 => 2 => 3)

Matrice multidimensionale Php:

Array (=> Array (=> 1) => Array (=> 2) => Array (=> 3))

Hai notato? In caso contrario, prestare attenzione agli elementi dell'array php multidimensionale. Sono array stessi. Quelli. un array multidimensionale è una raccolta di array. Il loro livello di nidificazione può essere grande quanto vuoi.

Ora, penso che sia decisamente chiaro 🙂

Vorrei anche evidenziare separatamente il concetto di array associativo php. Nella vita reale, non sono così comuni come quelli ordinari, ma hanno ancora un posto dove stare.

In breve, si tratta di array in cui la chiave e il valore di un elemento dell'array sono indissolubilmente legati e tra loro è possibile tracciare una certa connessione logica, che in nessun caso può essere interrotta.

Un esempio di array associativo è la seguente costruzione:

Array (=> 12 [nome] => Ivanov Ivan Ivanovich [average_point] => 3)

Come puoi vedere, qui i valori delle chiavi e i valori degli elementi dell'array sono strettamente correlati e in nessun caso questa relazione dovrebbe essere interrotta. Per questo motivo, gli array associativi sono molto spesso chiamati "dizionari" o "libri di riferimento".

Pertanto, questa caratteristica deve essere presa in considerazione quando si ordina un array php, poiché non tutti i metodi sono adatti a tali strutture.

Nello stesso php, gli array vengono creati in due modi:

  1. $ libri = array ('ABC', 'ABC', 'Dizionario); oppure $ libri = array ('azb' => 'ABC', 'buk' => 'Primer', 'slov' => 'Dizionario'); La seconda opzione viene utilizzata quando un elemento deve essere specificato in modo esplicito con un campo chiave (rilevante per gli array associativi). Se non lo specifichi, per impostazione predefinita le chiavi degli elementi dell'array saranno numeri. A partire da 0 (zero).
  2. $ libri = 'Alfabeto'; $ libri = 'Introduzione'; $ libri = 'Introduzione';

In entrambi i casi, $ libri sarà un array. Quindi, se ti imbatti in tali costruzioni nel codice del tuo sito, non sarà più qualcosa di incomprensibile per te 🙂

Se vuoi saperne di più sugli array php, allora ti consiglio il seguente video:

Ti ricordo che per vedere la struttura dell'array sul tuo schermo, dopo aver dichiarato l'array nel codice del sito, devi scrivere la seguente costruzione:

Eco "

"; print_r (array_variable); die ();

Se la variabile che stai stampando è un array, il testo inizierà con la seguente riga:

Vettore (...

E qualche altra parola sull'argomento del nostro articolo - ordinamento di arrayphp.

Come puoi immaginare, i dati negli array sono strutturati e gli elementi sono disposti in una certa sequenza. Per cambiarlo, abbiamo solo bisogno di ordinare l'array php, che è implementato da funzioni linguistiche già pronte.

Pertanto, tutto ciò che dobbiamo fare è chiamare la funzione richiesta dopo aver dichiarato l'array, specificandolo come parametro.

Passiamo a una panoramica delle funzioni stesse.

Funzioni di ordinamento dell'array Php

Un elenco completo di questi è presentato nella documentazione ufficiale di php:

Per ordinare l'array php usando una funzione specifica, dovrai chiamarlo dopo aver dichiarato l'array e averlo riempito di valori, specificando il nostro array come parametri. Ad esempio:

$ automobili = array ("Toyota", "Mazda", "Mitsubishi"); sort ($ auto);

Consideriamo brevemente la funzionalità di ciascuno di essi. Le funzioni saranno specificate nel formato in cui dovranno essere chiamate nel codice, es. "Nome (parametro1, parametro2, ...);".

Non dimenticare di mettere ";" dopo la chiamata di funzione, perché senza di essa, sullo schermo apparirà un bel messaggio di errore 🙂

Come esempio illustrativo, prendiamo un semplice array unidimensionale, in cui sia le chiavi che i valori non saranno ordinati in modo che i risultati dell'esecuzione delle funzioni siano più visivi e comprensibili.

Matrice (=> 11 => 18 => 9)

Quindi, come puoi ordinare un array nell'ordine desiderato in php?

Funzioni di ordinamento semplice dell'array php per valore

Se preferisci guardare il video alla lettura, ti consiglio di guardare questo video, che mostra in modo chiaro e chiaro il funzionamento delle funzioni per l'ordinamento dell'array php da questo blocco:

Se dopo di ciò hai ancora domande, puoi trovare informazioni più dettagliate su ciascuna funzione di seguito.

sort ($ array, $ flag);- una delle funzioni più semplici e richieste. Consente di ordinare un array in ordine crescente in php, tenendo conto dei valori degli elementi, ad es. saranno classificati dal più basso al più alto. Richiede una variabile array e uno dei flag di ordinamento come parametri, il che consente di modificare il comportamento di ordinamento.

Elenco delle bandiere:

  • SORT_REGULAR - gli elementi vengono confrontati senza cambiare tipo
  • SORT_NUMERIC - gli articoli vengono confrontati come numeri
  • SORT_STRING - gli elementi vengono confrontati come stringhe
  • SORT_LOCALE_STRING - confronto di stringhe, ma tenendo conto della locale corrente.
  • SORT_NATURAL - confronto di stringhe di elementi, dato il loro ordine naturale (come natsort)
  • SORT_FLAG_CASE - ordinamento senza distinzione tra maiuscole e minuscole degli elementi dell'array php (può essere combinato con SORT_STRING o SORT_NATURAL OR bit per bit).

Ma, nella maggior parte dei casi, il risultato dell'esecuzione della funzione è corretto anche senza questi flag di qualificazione. Per impostazione predefinita (se non viene specificato nulla) verrà utilizzato SORT_REGULAR.

Il nostro array di test, dopo aver chiamato la funzione sort(), sarà simile a questo:

Matrice (=> 9 => 11 => 18)

Come puoi vedere, dopo aver ordinato l'array per valori, anche i valori delle loro chiavi sono cambiati, poiché sort funziona senza mantenere una relazione chiave-valore, come indicato nella documentazione ufficiale di php.

Di conseguenza, questa opzione è adatta per la stragrande maggioranza dei casi.

rsort ($ array, $ flag);- una funzione che è una sorta di antagonista. L'antagonista, perché ordina l'array allo stesso modo, solo non in ordine crescente, ma in ordine decrescente, ad es. gli elementi dell'array php con i valori più grandi andranno per primi.

Puoi anche passargli due parametri: l'array stesso e il flag di ordinamento e, come sort, è più adatto per gli array unidimensionali. Dopo aver chiamato questa funzione, il nostro array di test assumerà la seguente forma:

Matrice (=> 18 => 11 => 9)

assortire ($ array, $ flag);- funzione php per ordinare un array per valore, il cui meccanismo è anche molto simile all'ordinamento.

Con l'unica eccezione che consente di ordinare l'array php in base al valore dei suoi elementi mantenendo la relazione chiave-valore.

Quindi, questa funzione è ottima per ordinamento di array associativi php, cioè. strutture in cui questa connessione è logica e importante.

Gli elementi saranno disposti in ordine crescente, poiché ti permette di ordinare l'array associativo php per valore preservando le chiavi.

Puoi anche passare due parametri. Il nostro array di test sarà simile a questo:

Matrice (=> 9 => 11 => 18)

Come puoi vedere, la differenza da sort sta solo nel mantenere le chiavi dei valori con cui è ordinato l'array php. Questo è chiamato mantenimento della relazione chiave-valore, che è incredibilmente importante quando si ordinano gli array associativi php.

arsort ($ array, $ flag);È un'altra funzione php per ordinare un array in base al valore. Antagonista di asort.

Funziona secondo lo stesso principio della funzione sopra, solo l'ordinamento dell'array php in questo caso sarà in ordine decrescente. Anche un'ottima opzione per l'ordinamento di array associativi php.

Dopo aver chiamato questa funzione, il nostro esempio sarà simile a questo:

Matrice (=> 18 => 11 => 9)

Funzioni per l'ordinamento avanzato dell'array php per valore

Questo blocco di funzioni, a differenza dei precedenti, che consentivano di modificare l'ordine in ordine decrescente/crescente, consentirà di aggiungere varietà e disporre gli elementi in sequenze diverse, diverse da quelle "tradizionali".

Questa caratteristica li rende adatti a risolvere vari compiti non standard, a volte molto interessanti 🙂

natsort ($ array);- questa funzione porta varietà alla famiglia delle soluzioni sort-like, poiché il meccanismo del suo lavoro è fondamentalmente diverso da loro. Natsort ha un solo parametro di input: questo è un array da ordinare, i cui valori saranno disposti in un ordine familiare all'uomo. Questo algoritmo è chiamato "ordinamento naturale", che in russo significa "ordinamento naturale". Per comprendere il significato di questa affermazione, prenderemo un altro array come esempio:

Array (=> studente5 => studente1 => studente10)

Inoltre, la funzione natsort mantiene una relazione chiave-valore. Pertanto, confronteremo il suo lavoro con asort, che è il più simile possibile ad esso. Dopo aver chiamato quest'ultimo, il nostro array assumerà la seguente forma:

Array (=> studente1 => studente10 => studente5)

Se chiamiamo natsort, l'array risultante sarà così:

Array (=> studente1 => studente5 => studente10)

Penso che tu possa vedere la differenza ora e come funziona natsort per te :-)

casuale ($ array);- una funzione meravigliosa e molto utile con la quale puoi mescolare un array php e disporre i suoi elementi in ordine casuale.

È molto comodo quando è necessario disporre in modo casuale i prodotti di un negozio online in una categoria o in un'altra pagina, o quando si visita un sito di biglietti da visita, mostrare agli utenti blocchi di informazioni ogni volta in una sequenza diversa.

Tuttavia, la relazione chiave-valore non viene preservata. Cioè, l'array utilizzato da noi nell'esempio precedente, ho preso personalmente la forma:

Array (=> studente10 => studente5 => studente1)

Inoltre, dopo ogni chiamata di funzione, l'ordine degli elementi sarà diverso.

Le funzioni che abbiamo considerato in precedenza sono abbastanza semplici e il meccanismo del loro funzionamento è chiaro. Un array viene passato come parametro, il cui contenuto deve essere ordinato in base ai valori dei suoi elementi, nonché un flag che può modificare il comportamento di ordinamento (puoi facilmente farne a meno).

È abbastanza popolare tra i programmatori, perché consente di risolvere qualsiasi problema di ordinamento (utilizzando una varietà di algoritmi) utilizzando la sua funzione.

Uno di questi compiti è php dal campo richiesto.

Per illustrare come funzionano le seguenti funzioni, prendiamo come esempio il seguente array:

Array (=> Array (=> 32) => Array (=> 11) => Array (=> 27))

Come puoi vedere, è multidimensionale, perché i suoi elementi sono array, la cui struttura è identica: hanno tutti un campo con la chiave "id". E ora il nostro compito è ordinare questi elementi in ordine crescente, ad es. in modo che gli elementi nell'array principale si trovino in base ai valori dei campi nei sottoarray.

Devo dire, un compito abbastanza comune. Le seguenti funzioni ci aiuteranno a risolverlo:

usort ($ array, 'funzione');- funzione php per ordinare un array multidimensionale in base al campo desiderato.

Consente di ordinare gli elementi di un array php senza preservare la relazione chiave-valore secondo una funzione personalizzata il cui nome viene passato come secondo parametro quando si chiama usort.

La funzione stessa è descritta separatamente. Per il nostro esempio, per ordinare gli elementi di un array php multidimensionale in base al campo ['id'] in ordine crescente, la funzione personalizzata sarà simile a questa:

Funzione myCmp ($ a, $ b) (if ($ a ["id"] == $ b ["id"]) return 0; return $ a ["id"]> $ b ["id"]? 1 : -uno; )

Tutto ciò di cui abbiamo bisogno ora per avviare l'ordinamento è chiamare usort ($ array, 'myCmp'); nella posizione corretta del codice. Specifica il nome di una variabile di matrice come primo parametro.

Di conseguenza, otteniamo quanto segue:

Array (=> Array (=> 11) => Array (=> 27) => Array (=> 32))

uasort ($ array, 'funzione');- un'altra funzione php per ordinare un array multidimensionale in base al campo desiderato.

Funziona come usort, ma mantiene una relazione chiave-valore, rendendolo adatto per l'ordinamento di array associativi multidimensionali.

La funzione personalizzata per il nostro esempio sarà la stessa. I risultati della sua esecuzione saranno simili a questo:

Array (=> Array (=> 11) => Array (=> 27) => Array (=> 32))

Per modificare l'ordinamento degli elementi ed effettuare alcune trasformazioni aggiuntive dei dati, sarà necessario modificare una funzione definita dall'utente, come avrai intuito tu stesso 🙂

Ad esempio, se i tuoi array, che sono elementi dell'originale, conterranno un campo ['nome'] con un valore stringa, una funzione personalizzata per ordinare un array php multidimensionale in base a questo campo in ordine crescente sarà simile a questo:

Funzione myCmp ($ a, $ b) (if (strcasecmp ($ a ["nome"], $ b ["persona"] ["nome"]) == 0) return 0; return strcasecmp ($ a ["nome" "], $ b [" nome "])> 0? 1: -1;)

L'ordinamento degli array php utilizzando le funzioni personalizzate non è l'opzione più semplice, ma è molto flessibile nella personalizzazione e, se lo padroneggi, diventerà la tua soluzione preferita.

array_multisort ($ array1, $ array2, $ flag);- alla fine, ho salvato la funzione php più terribile e oscura per ordinare un array. Accetta due array come parametri di input e gli stessi flag di ordinamento che possono essere specificati nelle funzioni di ordinamento. Array_multisort funziona nel modo seguente: il primo parametro è un array da ordinare, l'ordinamento del primo viene specificato come secondo array, dopodiché il secondo array viene ordinato per analogia con il primo. Invece di un array che rappresenta l'ordinamento, puoi utilizzare le costanti SORT_DESC per ordinare l'array in ordine decrescente e SORT_ASC in ordine crescente. A tutta questa confusione, puoi anche aggiungere flag di ordinamento, che possono venire dopo tutti gli array.

$ libri = array (32, 11, 27); $ sort_array = array (1, 2, 3); array_multisort ($ libri, $ sort_array);

In questo esempio, ho ordinato un semplice array unidimensionale $ libri in base all'array $ sort_array. Di conseguenza, il primo array ha assunto la seguente forma:

Matrice (=> 11 => 27 => 32)

E il secondo è diventato così:

Matrice (=> 2 => 3 => 1)

Cioè, è ordinato secondo il primo. Ecco un tale prezzemolo 🙂

Per maggiori dettagli su array_multisort, guarda il prossimo video. Inoltre lì troverai ulteriori esempi del suo utilizzo:

Usando questa funzione, puoi anche ordinare array multidimensionali:

$ libri = array (array (32), array (11), array (27)); $ sort_array = array (1, 2, 3); array_multisort ($ libri, $ sort_array);

L'array $ libri sarebbe simile a questo:

Array (=> Array (=> 11) => Array (=> 27) => Array (=> 32))

Allo stesso tempo, in questa funzione, puoi specificare diversi array, effettuando l'ordinamento per diversi campi. In questo caso, i risultati dell'ordinamento degli array precedenti influenzeranno quelli successivi, il che alla fine porterà a ordinare l'ultimo secondo vari criteri.

Ecco una sorta di "palla di neve" in php.

Quando si ordina un array php utilizzando questa funzione, la relazione chiave-valore viene preservata per gli array associativi, ma non per quelli numerici.

I programmatori che hanno testato il funzionamento di varie funzioni notano che quando si ordina un array multidimensionale, php array_multisort funziona meglio di usort.

Ma array_multisort non può gestire tutte le attività che usort può svolgere. Ad esempio, lo stesso ordinare un array multidimensionalephp dal campo richiesto... Quindi, in ogni singolo caso, è necessario analizzare le possibilità di successo quando si utilizza l'uno o l'altro design.

Per quanto mi riguarda, posso dire che non mi piace un po' array_multisort a causa della sua confusione e dell'aumento dello stress cerebrale, che sono accompagnati da tentativi di rappresentare l'array risultante ordinato con il suo aiuto.

Pertanto, cerco di non usarlo inutilmente, preferendo usort e funzioni più semplici, cosa che esorto a fare anche tu :)

Le funzioni precedentemente considerate consentono di ordinare gli array in php in base al valore degli elementi. Parliamo di come eseguire un'azione simile sui tasti oggetto.

Funzioni Php per ordinare un array per chiave

Prima di arrivare alla panoramica delle funzioni di questo gruppo, vorrei dire che hanno tutti una cosa in comune: conservano tutti una relazione chiave-valore. Altrimenti, infatti, non potrebbe essere, perché allora non avrebbe senso da parte loro 🙂

Tale è la caratteristica. Diamo un'occhiata più da vicino a ciascuna funzione.

ksort ($ array, $ flag);- la funzione è analoga a asort, solo l'ordinamento degli elementi nell'array verrà eseguito non per valori, ma per chiavi.

Questa costruzione ha due parametri di input: l'array php da ordinare e uno dei flag di ordinamento, per un elenco completo dei quali puoi trovare nella descrizione della funzione sort (il suo utilizzo è facoltativo). Questa funzione php ti consente di ordinare un array in ordine crescente.

Per dimostrare come funziona, torniamo all'esempio descritto all'inizio dell'articolo:

Matrice (=> 11 => 18 => 9)

Se lo ordini con ksort, il risultato sarà il seguente:

Matrice (=> 18 => 9 => 11)

Penso che tutto sia semplice e chiaro.

krsort ($ array, $ flag);- un'altra funzione php per ordinare un array per chiave, molto simile alla precedente.

L'unica differenza è che ordina l'array php in ordine decrescente. Cioè, è un antagonista di ksort, proprio come rsort è per sort.

Ha anche due parametri di input: l'array da ordinare e una delle chiavi. Dopo averlo avviato, il nostro esempio sarà simile a questo:

Matrice (=> 11 => 9 => 18)

Penso che i commenti siano superflui 🙂

ukrsort ($ array, 'funzione');- un analogo della funzione php precedentemente menzionata per ordinare un array per chiave - usort.

Funziona sullo stesso principio: salva la relazione "chiave-valore" e l'array php viene ordinato secondo la funzione personalizzata, il cui nome viene passato come secondo parametro. Il primo parametro, immutabile, è l'array da ordinare.

La differenza da usort è che l'ordinamento avviene tramite le chiavi degli elementi.

Per chiarezza del funzionamento di questa funzione, utilizziamo il seguente esempio:

Matrice (=> 40 => 0 => 10)

Ad esempio, dobbiamo ordinare l'array php per chiave in ordine crescente. In questo caso, la funzione personalizzata sarà simile a questa:

Funzione myCmp ($ a, $ b) (if ($ a == $ b) return 0; return $ a< $b ? 1: -1; }

Di conseguenza, il nostro array sarà simile a questo:

Matrice (=> 0 => 10 => 40)

Un vantaggio inequivocabile dell'utilizzo di questa funzione è che può essere utilizzata per ordinare l'array php in base a un attributo o algoritmo insolito.

Lascia che ti ricordi che devi usarlo solo quando le chiavi degli elementi dell'array hanno un significato. Altrimenti, è meglio usare usort o altre funzioni più semplici.

Ecco il nostro articolo ed è giunto al termine (come se avessi letto fin qui) 🙂

In esso, ho cercato di descrivere in modo semplice e allo stesso tempo chiaro e completo tutti i modi possibili per ordinare vari tipi di array in php, supportando le mie parole con esempi.

Ammetto che la pubblicazione è uscita piuttosto voluminosa e difficile per una lettura una tantum. Ma ogni volta che ne hai bisogno ordinamento array php, puoi sempre fare riferimento a questo articolo per una descrizione della funzione di cui hai bisogno e vedere esempi del suo utilizzo.

Spero che le informazioni ti siano state utili :)

Iscriviti agli aggiornamenti del progetto e

Principali articoli correlati