2011-07-01 18 views
5

Mam tablicę, która wygląda tak:Usuwanie elementów z tablicy, którego wartość odpowiada określony ciąg

 
Array ([0] => Vice President [1] => [2] => other [3] => Treasurer) 

i chcę usunąć wartość z other wartości.

Próbuję użyć array_filter, aby odfiltrować to słowo, ale array_filter usunie również wszystkie puste wartości.

Chcę wynik będzie tak:

 
Array ([0] => Vice President [1] => [2] => Treasurer) 

To jest mój kod PHP filtr:

function filter($element) { 
    $bad_words = array('other'); 

    list($name, $extension) = explode(".", $element); 
    if(in_array($name, $bad_words)) 
    return; 

    return $element; 
} 

$sport_level_new_arr = array_filter($sport_level_name_arr, "filter"); 

$sport_level_new_arr = array_values($sport_level_new_arr); 

$sport_level_name = serialize($sport_level_new_arr); 

Czy mogę zastosować inną metodę filtrowania to słowo?

Odpowiedz

3
foreach($sport_level_name_arr as $key => $value) { 

    if(in_array($value, $bad_words)) { 
    unset($sport_level_name_arr[$key]) 
    } 

} 
+0

To nie numeruje tablicy, tak jak chciał OP. – EdoDodo

+0

Dziękuję bardzo ... Twój skrypt mnie ochroni ... dzięki – wyman

+0

Hej EdoDodo Po prostu potrzebujesz funkcji php "array_values", – wyman

3

array_filter() to właściwa funkcja. Upewnij się, że funkcja zwrotna ma właściwą logikę.

Spróbuj wykonać następujące czynności:

function other_test($var) { 
    // returns whether the value is 'other' 
    return ($var != 'other'); 
} 

$new_arr = array_filter($arr, 'other_test'); 

Uwaga: jeśli chcesz reindex tablicę, a następnie można nazwać $new_arr = array_values($new_arr); po wyżej.

2

To utworzy dwie tablice i znajdzie różnicę. W drugiej tablicy będziemy umieszczać elementy do wykluczenia:

array_values(array_diff($arr,array("other"))); 
+0

Ładny kod. Co to robi? –

+0

utworzy dwie tablice i znajdzie diffrence, w drugiej tablicy umieścimy elementy do wykluczenia – Sreeraj

+0

Dzięki za edycję, Phoenix – Sreeraj

0

Jeśli funkcja zwrotna zwraca true, bieżąca wartość z wejścia jest zwracane do tablicy wynikowej. PHP Manual

Więc trzeba zrobić return true; w funkcji zamiast return $element;filter();, aby upewnić się, że nie ma pustych wartości są usuwane.

Powiązane problemy