Удаление элементов из массива, значение которого соответствует указанной строке - PullRequest
5 голосов
/ 01 июля 2011

У меня есть массив, который выглядит так:

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

и я хочу удалить значение с other в значении.

Я пытаюсь использовать array_filter для фильтрации этого слова, но array_filter также удалит все пустые значения.

Я хочу, чтобы результат был таким:

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

Это мой код фильтра PHP:

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);

Можно ли использовать другой метод для фильтрации этого слова?

Ответы [ 4 ]

4 голосов
/ 01 июля 2011

array_filter() - правильная функция.Убедитесь, что ваша функция обратного вызова имеет правильную логику.

Попробуйте выполнить следующее:

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

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

Примечание: если вы хотите переиндексировать массив, вы можете вызвать $new_arr = array_values($new_arr); после вышесказанного.

3 голосов
/ 01 июля 2011
foreach($sport_level_name_arr as $key => $value) {

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

}
2 голосов
/ 01 июля 2011

Это создаст два массива и найдет разницу. Во втором массиве мы поместим исключаемые элементы:

array_values(array_diff($arr,array("other")));
0 голосов
/ 01 июля 2011

Если функция обратного вызова возвращает true, текущее значение из input возвращается в массив результатов. Руководство по PHP

Так что вам нужно сделать return true; в вашей функции filter(); вместо return $element;, чтобы убедиться, что никакие пустые значения не удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...