ciao a tutti, poichè dovevo decidere quale di questi due metodi usare ho deciso di fare un banchmark per vedere quale sistema sia il più veloce per trovare all'interno di un array una stringa.

innanzitutto ho creato un array con 150 chiavi numeriche all'interno (da 1 a 150) dopo di che ho eseguito 1000 volte grazie ad un ciclo for le due operazioni. per cronometrare i tempi ho usato una funzione (set_timer(event name)) che uso per misurare i tempi di esecuzione. eccovi il codice eseguito:

Codice PHP:

$array 
= array(118,50,8,71,15,57,59,141,126,121,41,58,52,3,86,117,81,34,110,100,47,134,40,1,82,109,128,2,6,65,84,45,140,101,136,42,7,31,147,73,17,62,146,74,115,14,10,35,9,145,150,97,95,39,83,138,32,102,16,18,61,137,13,144,36,106,111,89,108,148,70,96,63,23,76,80,124,90,49,107,29,127,44,119,85,38,53,122,149,94,79,129,21,30,64,56,103,93,19,92,28,112,120,4,125,67,78,48,55,88,133,43,66,25,37,143,46,135,72,104,60,87,91,68,77,27,113,75,12,33,11,54,51,114,142,5,26,130,105,69,20,131,22,24,98,99,123,132,116,139);
$key 8;

/*-----------------------------------*/
set_timer('in_array');

for(
$i=0;$i<1000;$i++){
    
$bool in_array($key$array);
}

set_timer('in_array');
/*-----------------------------------*/


/*-----------------------------------*/
set_timer('foreach');

for(
$i=0;$i<1000;$i++){
    foreach(
$array as $val){
        if(
$val==$key) break;
    }
}


set_timer('foreach');
/*-----------------------------------*/ 
ed ecco i risultati usando come chiave di ricerca 8 che si trova all'inizio dell'array:

main è durato 3.875 Ms.
in_array è durato 1.351 Ms. Avviato dopo 0.036 Ms. 36.8% di main.
foreach è durato 2.247 Ms. Avviato dopo 1.409 Ms. 61.2% di main.

mentre invece usando $key=138 che si trova alla fine dell'array:

main è durato 96.195 Ms.
in_array è durato 10.196 Ms. Avviato dopo 0.035 Ms. 10.8% di main.
foreach è durato 84.11 Ms. Avviato dopo 10.264 Ms. 89.1% di main.


main è ovviamente il tempo di esecuzione totale