Да, я знаю функцию array_unique
, но дело в том, что совпадение может иметь законные дубликаты в моем поисковом выражении, например:
$str = "fruit1: banana, fruit2: orange, fruit3: banana, fruit4: apple, fruit5: banana"; preg_match("@fruit1: (?<fruit1>\w+), fruit2: orange, fruit3: (banana), fruit4: (?<fruit4>apple), fruit5: (banana)@",$str,$match); array_shift($match); // I dont need whole match print_r($match);
выход:
Array ( [fruit1] => banana [0] => banana [1] => banana [fruit4] => apple [2] => apple [3] => banana )
Таким образом, единственными ключами, которые являются реальными дубликатами, являются [0] и [2], но array_unique
дает:
Array ( [fruit1] => banana [fruit4] => apple )
Это мое решение для вашей проблемы:
unset($matches[0]); $matches = array_unique($matches);
неunset($matches[0]); $matches = array_unique($matches);
Я нашел это сам, решение – это цикл while, который удаляет следующий ключ, тот, который он есть, не является числовым:
while (next($match) !== false) { if (!is_int(key($match))) { next($match); unset($m[key($match)]); } } reset($match);
сwhile (next($match) !== false) { if (!is_int(key($match))) { next($match); unset($m[key($match)]); } } reset($match);