Ho un allineamento generato dinamicamente di nomi di file, diciamo sembra qualcosa di simile:modo efficace per eliminare più elementi array PHP
$files = array("a-file","b-file","meta-file-1", "meta-file-2", "z-file");
Ho un paio di nomi di file specifici che voglio scartato dalla matrice :
$exclude_file_1 = "meta-file-1";
$exclude_file_2 = "meta-file-2";
Quindi, io so sempre i valori degli elementi che voglio scartato, ma non le chiavi.
Attualmente sto esaminando un paio di modi per farlo. Un modo, utilizzando array_filter e una funzione personalizzata:
function excludefiles($v)
{
if ($v === $GLOBALS['exclude_file_1'] || $v === $GLOBALS['exclude_file_2'])
{
return false;
}
return true;
}
$files = array_values(array_filter($files,"excludefiles"));
Un altro modo, using array_keys and unset:
$exclude_files_keys = array(array_search($exclude_file_1,$files),array_search($exclude_file_2,$files));
foreach ($exclude_files_keys as $exclude_files_key)
{
unset($files[$exclude_files_key]);
}
$files = array_values($page_file_paths);
Entrambi i modi di produrre il risultato desiderato.
Mi chiedo quale sarebbe più efficiente (e perché)?
O forse c'è un altro modo più efficiente per farlo?
Come forse c'è un modo per avere più valori di ricerca nella funzione array_search?
Ciao Feanne: non è necessario modificare il titolo dopo aver trovato una risposta accettabile. StackOverflow si prende cura di tutto ciò una volta che si preme il segno di spunta verde :) –
Notato, grazie @MikeB :) – Feanne