Mam generowanych dynamicznie tablicę z nazwami plików, powiedzmy, że wygląda to mniej więcej tak:skuteczny sposób usunąć wiele elementów z tablicy PHP
$files = array("a-file","b-file","meta-file-1", "meta-file-2", "z-file");
Mam kilka konkretnych nazw, które chcę wyrzucić z tablicy :
$exclude_file_1 = "meta-file-1";
$exclude_file_2 = "meta-file-2";
Tak, zawsze będę znać wartości elementów, które chcę odrzucić, ale nie klucze.
Obecnie patrzę na kilka sposobów, aby to zrobić. Jednym ze sposobów, przy użyciu array_filter i funkcję niestandardowy:
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"));
inny sposób 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);
Oba sposoby uzyskania pożądanego rezultatu.
Zastanawiam się, który z nich byłby bardziej wydajny (i dlaczego)?
A może jest inny, bardziej skuteczny sposób na zrobienie tego?
Może istnieje sposób na uzyskanie wielu wartości wyszukiwania w funkcji array_search?
Cześć Feanne - nie trzeba zmieniać tytułu, gdy już znajdziesz akceptowalną odpowiedź. StackOverflow zajmuje się tym wszystkim, gdy uderzysz w zielony znacznik wyboru :) –
Zauważam, dziękuję @MikeB :) – Feanne