Сбросить элемент массива на основе первого символа - PullRequest
1 голос
/ 02 июня 2011

Я пытаюсь найти способ сбросить элемент, если первый символ - это определенная буква, в данном случае буква D ... Я не уверен, есть ли функция массива, чтобы сделать что-то подобное или еслизамена preg сделает трюк?

[0] => Aaron [1] => Bob [2] => Carl [3] => Dale [4] => Devin [5] => Dylan

Сброс всех слов, начинающихся с буквы "D", приведет к:

[0] => Aaron [1] => Bob [2] => Carl

Ответы [ 4 ]

3 голосов
/ 02 июня 2011

Ручной цикл уже выполняет задачу.Но в качестве однострочного варианта:

 $array = preg_grep('/^(?!D)/', $array);
1 голос
/ 02 июня 2011

Вы можете использовать функцию array_filter :

function filter_firstchar($var){
    return $var[0] != 'D';
}

$result = array_filter($arr, 'filter_firstchar');

Если письмо, по которому вы собираетесь фильтровать, изменится, вы можете создать действительно базовый класс фильтрации:

class Filter_FirstChar {
    private $char;
    function __construct($char){
        $this->char = $char;
    }
    function filter($var){
        return $var[0] != $this->char;
    }
}

$result = array_filter($arr, array(new Filter_FirstChar('A'), 'filter'));
1 голос
/ 02 июня 2011
foreach($array as $key => $name)
{
    if(substr($name,0,1) == "D")
    {
        unset($array[$key]);
    }
}

Это один из методов, который может хорошо работать для вас.

1 голос
/ 02 июня 2011
$i = 0;
$n = count($array);
while ($i < $n) {
  if ($array[$i][0] == 'D')
    unset($array[$i]);
  ++$i;
}
...