Il linguaggio PHP permette di fare una mirade di cose soprattutto dopo gli ultimi aggiornamenti. Con la versione 7.4 PHP ha ottimizzato alcune lacune tecniche e ha migliorato ancor di più le performance (introduzione del preloading) in modo da rendere questo linguaggio uno dei più preferiti per quanto riguarda la programmazione lato server.
In questo articolo parliamo di un problema comune che possiamo avere nella programmazione PHP che è quello di trovare una stringa all’interno di una struttura dati array, trovare la posizione di essa (indice dell’array) e fare questa operazione anche in un array multidimansionale.
Per raggiungere questo scopo possiamo utilizzare tre funzioni di PHP:
- array_search(“stringa”,$array): trova una stringa all’interno di un array e, se presente, ci ritorna l’indice della strnga altrimenti ci ritorna false/vuoto;
- in_array(“stringa”,$array): trova una stringa nell’array e ci restituisce true se presente, false altrimenti;
- array_column($arraymulti,”colonna”): passandogli il nome di una colonna/chiave ci restituisce un array monodimensionale della colonna di un array multidimensionale.
Le prime due funzioni accettano solo array monodimensionali. Da questa precisazione deriva l’uso della terza funzione.
Osservazione: la funzione array_search() restituisce un numero da 0 a n a seconda degli elementi dell’array e se la stringa viene trovata all’interno. Se non viene trovato nulla restituisce stringa vuota. Il booleano false è indicato anche dal numero 0 ma in questo caso 0 potrebbe essere anche l’indice dell’array.
Sapendo questa osservazione e utilizzando queste funzioni riusciamo a scrivere un metodo completo per trovare una stringa in un array e restituirci la sua posizione:
public function cercaStringaArray("stringa",$array){
if(in_array("stringa",$array)){ //se array multidimensionale al posto di $array scriveremo array_column($array,"colonna")
//la stringa c'é e quindi l'indice che verrà restituito sarà >= 0
return array_search("stringa",$array); //se array multidimensionale al posto di $array scriveremo array_column($array,"colonna")
}else{
return false;
}
}