Array PHP: funzioni e valore

20/05/2019

A livello di PHP, un array è un elenco ordinato che viene mappato su una mappa. In altre parole, PHP combina semplicemente questi due concetti, risultando in una soluzione abbastanza flessibile, ma, d'altra parte, non la struttura dati ottimale rispetto a opzioni simili.

Pochi sanno che a livello C (e in effetti a livello di sistema) non ci sono matrici che potrebbero avere dimensioni non fisse. Pertanto, se si intende creare una matrice in C, sarà necessario specificarne la dimensione in modo che il sistema possa determinare la quantità di spazio libero necessario per l'allocazione.

Cos'è un array php?

array php

In PHP, l'ordinamento di una matrice è ben lungi dall'essere lo stesso di altri archivi di dati: qui si tratta di una mappatura ordinata, che determina la corrispondenza tra una chiave e un determinato valore. Questo tipo di array è ottimizzato in diverse direzioni, che consente di utilizzarlo direttamente come array stesso, come pure un dizionario, una lezione, una tabella hash e anche per una serie di altri scopi, a propria discrezione. Va notato che nel caso di PHP, il valore nell'array può essere un altro array simile. Questo ti permette di formare alberi, così come l'archiviazione multidimensionale.

Tra le caratteristiche distintive di questo repository, vale la pena notare come sia facile rimuovere una matrice in PHP. Infatti, in questo caso, la procedura è molto più semplice rispetto a file system simili.

Come è implementato in PHP?

array php multidimensionale

Se stai per creare un array completamente vuoto, in questo caso l'array PHP viene creato con una dimensione specifica. Se questo volume viene riempito e successivamente si decide di superare questa dimensione, verrà creato un array completamente nuovo, con un volume doppio rispetto a quello esistente, e tutti i dati verranno copiati in esso, mentre il vecchio array verrà completamente distrutto. Questo approccio è standard.

Infatti, per implementare un array PHP, viene utilizzata una struttura dati tradizionale chiamata tabella hash. Questa struttura include un puntatore all'ultimo e il primo valore, necessario per ordinare gli array, nonché un puntatore al valore corrente, che viene utilizzato per fornire l'iterazione sull'array. Inoltre, la tabella hash contiene il numero di elementi memorizzati in array, array puntatori alla benna e altri dati importanti.

Perché Hash Table?

ordinamento di array php

La tabella hash ha due caratteristiche importanti: è la struttura dei dati stessa, così come il bucket (bucket).

I bucket memorizzano i valori stessi, ovvero ognuno di essi ha il proprio bucket, ma in aggiunta contiene anche la chiave originale, oltre a vari puntatori ai bucket precedenti o successivi, che vengono utilizzati per organizzare l'array creato, come in PHP Le chiavi possono andare in un ordine diverso, a seconda dei desideri dell'utente.

Pertanto, se si desidera aggiungere qualche nuovo elemento all'array, ma questa chiave non è ancora presente, verrà automaticamente creata un nuovo bucket, che verrà aggiunto alla tabella hash. E in questo caso, è necessario capire correttamente come un array PHP multidimensionale memorizzerà questi bucket.

Come ottenere la chiave?

Come accennato in precedenza, il sistema ha una serie specializzata di puntatori ai bucket, con ciascun bucket che ha accesso tramite un indice specifico, che viene determinato tramite una chiave. Sembra spesso piuttosto difficile, ma in realtà, tutto è in qualche modo più semplice di quanto sembri. Pertanto, la chiave può essere ottenuta come segue:

  • se la chiave è una stringa, in questo caso la stringa viene sottoposta a hash fino all'intero;
  • una maschera viene applicata alla chiave ricevuta, che è uguale alla dimensione dell'array meno 1;
  • Infine, questa chiave può essere utilizzata come un indice per determinare il puntatore necessario al bucket dall'array.

Informazioni sulla maschera: ad esempio, l'array di dati contiene quattro elementi diversi, quindi la maschera sarà uguale a tre. Ora, se come chiave si ottiene un numero come 123, allora in questo caso, dopo aver applicato la maschera, 3 verrà ricevuto e questo numero può già essere utilizzato come indice.

Come affrontare le collisioni?

uscita php array

I secchi hanno un paio di caratteristiche importanti da sapere. Ogni bucket ha un puntatore al successivo e al precedente, con indici uguali. Pertanto, oltre alla lista doppiamente collegata principale che attraversa tutti i serbatoi utilizzati, vi sono anche due piccole liste doppiamente collegate tra i secchi aventi un indice uguale.

Quello che succede dopo che l'array utilizzato è completamente pieno viene chiamato rehash tra gli specialisti. In sostanza, questa è un'iterazione su tutti i bucket usati, così come l'assegnazione dei loro vicini e l'aggiunta di link ad essi.

Come ottenere un oggetto per chiave?

elemento php array

La procedura è inizialmente la stessa del caso di ottenere una chiave, ma in questo caso c'è una continuazione:

  • Nel caso in cui la chiave sia stringa, la stringa viene sottoposta a hash su intero.
  • Dopo aver ricevuto un tasto numerico, viene applicata una maschera, che è costantemente uguale alla dimensione dell'array.
  • Su un indice il secchio viene estratto.
  • Se la chiave di questo bucket è uguale a quella che stai cercando, la ricerca è completata. In caso contrario, procedere ulteriormente.
  • Nel ciclo risultante, viene prelevato un bucket da pNext, quindi verificare se la chiave è uguale a quella richiesta.

Tali azioni devono essere ripetute fino a quando i bucket non escono completamente da pNext o finché non trovi una corrispondenza a cui sei interessato.

Vale la pena notare che l'array PHP multidimensionale è quasi completamente costruito su una singola struttura HashTable, dal momento che tutte le variabili che si trovano in un particolare ambito sono effettivamente in questa struttura dati, lacerate come metodi, campi e definizioni di classe. Inoltre, questa struttura dati consente di raggiungere quasi la stessa velocità di tutte le operazioni e, allo stesso tempo, le rende molto più semplici da eseguire.

Definizione in array

php remove array

Un array viene creato usando l'array del costrutto del linguaggio, che può assumere qualsiasi numero di coppie chiave => valore, separate da virgole, come parametri.

La chiave in questo caso può essere una stringa o un intero. Se la chiave è un numero intero standard, verrà interpretata in questo caso, mentre il float verrà ritagliato in questo formato. Vale la pena notare che in PHP, l'ordinamento di un array non prevede alcuna differenza tra array associativi e indici, ovvero esiste un solo tipo di storage, che contiene sia indici stringa che numerici.

Caratteristiche utili

valore php in array

Per il normale lavoro con gli array, viene fornito un numero sufficientemente grande di funzioni diverse, tuttavia, non tutti loro sanno e sono in grado di usarli. In particolare, si dovrebbe prestare particolare attenzione a una funzione come unset, che consente di rimuovere completamente le chiavi che un elemento dell'array ha in PHP. Se si desidera eseguire un'azione nello stile "Rimuovi e sposta", l'array può essere reindicizzato tramite array_values.

La struttura di controllo foreach è stata appositamente creata per lavorare con gli array. Questa funzione è usata per visualizzare facilmente il contenuto dell'array e interagire con i dati.

comandi

Quando si dichiara un array PHP indicizzato, dopo aver impostato il nome della variabile, viene impostata anche una coppia di parentesi quadre, in cui viene indicata direttamente la posizione dell'array dato. Ci sono anche diversi comandi di base che devi sapere quando crei questo array:

  • Array. Questa funzione riceve zero o più elementi e quindi restituisce completamente un array composto da tali elementi.
  • Lista. Questa costruzione è in qualche modo simile alla matrice, ma il suo scopo principale è quello di assegnare simultaneamente diversi valori, che vengono estratti dalla matrice, a diverse variabili simultaneamente.
  • Range. Questo design fornisce una creazione rapida e semplice di un array di numeri interi da un intervallo definito dai limiti inferiore e superiore. Questo comando restituisce completamente una matrice composta da numeri interi dell'intervallo specificato.
  • Array_chunk. Divide un array in diversi segmenti.

Come puoi usare questi array?

In ogni caso, la stringa letterale deve essere racchiusa tra virgolette nell'indice di un array associativo. Molto spesso è possibile trovare la sintassi nei vecchi script, in cui non ci sono virgolette, e questo può funzionare, anche se non è corretto. In questo caso, il motivo è che questo codice contiene una costante indefinita invece di una stringa, in conseguenza del quale in PHP l'output dell'array può essere tale che la "linea nuda" può essere automaticamente convertita in una stringa completa con un valore appropriato. In altre parole, se inizialmente non era possibile determinare la costante impostata, PHP aggiungeva virgolette per conto proprio e quindi utilizzava correttamente la stringa inserita.

Va notato che non è sempre necessario racchiudere le virgolette tra virgolette. Ad esempio, non è necessario racchiudere variabili o costanti tra virgolette, poiché in questo caso l'output dell'array in PHP potrebbe non essere corretto e questi comandi verranno elaborati in modo errato.

Con cosa minaccia?

Se in futuro il team di sviluppo di PHP decide di aggiungere qualche nuova parola chiave o una costante aggiuntiva, allora potresti avere problemi. Lo stesso vale per la situazione se una costante proveniente da un altro codice interferisce con l'array. Ad esempio, potresti non essere in grado di utilizzare parole come predefinite e vuote, dal momento che sono chiavi riservate.

Converti in array

Per qualsiasi tipo di chiave, convertendo il valore in array PHP, le funzioni di cui l'utente stesso sceglie, in definitiva fornisce l'opportunità di ottenere un array con un singolo elemento che ha un valore scalare.

Se decidi di convertire un oggetto in un array, in questo caso le proprietà di questo oggetto verranno utilizzate come elementi di questo array. Dopo aver deciso come inviare l'array in PHP, i nomi delle proprietà dell'oggetto con determinate eccezioni rilevanti verranno utilizzati come chiavi:

  • perdi l'accesso alle proprietà di interi;
  • un nome verrà assegnato davanti a ciascun campo di classe chiuso;
  • i campi di classe protetti di fronte hanno un carattere assegnato.

Tutti questi valori aggiunti hanno zero byte su entrambi i lati, che abbastanza spesso possono provocare un comportamento alquanto inaspettato dell'array per il suo proprietario.

Come potete vedere, l'uso di tali array è estremamente semplice per gli utenti avanzati e, soprattutto, sono estremamente convenienti nel loro utilizzo. Nessun grande progetto può essere immaginato senza l'uso di diversi tipi di array, mentre allo stesso tempo abbiamo cercato di considerare solo una certa parte delle funzioni e delle funzioni disponibili di tali sistemi, senza entrare in sottigliezze su come possono essere utilizzati in varie situazioni.