0

はい、私は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
)
4

2 に答える 2

2

これがあなたの問題に対する私の解決策です:

unset($matches[0]);
$matches = array_unique($matches);
于 2015-01-26T19:41:51.520 に答える
1

私はそれを自分で見つけました、解決策は後続のキーを削除するwhileループであり、それが存在するものは数値ではありません:

while (next($match) !== false) {
  if (!is_int(key($match))) {
    next($match);
    unset($m[key($match)]);
  }
}
reset($match);
于 2012-11-24T18:31:18.087 に答える