首页 > 解决方案 > 当我使用 preg_match_all php 时,array_unique() 不起作用

问题描述

我的代码是:

$a = <<<'EOD'
function makeItBIG($a_lot_of_names) {
  foreach($a_lot_of_names as $the_simpsons) {
    $BIG[] = strtoupper($the_simpsons);
  }
  return $BIG;
}

$a_lot_of_names = ['Homer', 'Marge', 'Bart', 'Maggy', 'Lisa'];
var_dump(makeItBIG($a_lot_of_names));
EOD;
$input_lines = $a;
preg_match_all('/\$\w+/', $input_lines, $output_array);
$output_array = array_unique($output_array);
$output_array = array_values($output_array);
echo json_encode($output_array);

为什么输出仍然重复?输出是:

[["$a_lot_of_names","$a_lot_of_names","$the_simpsons","$BIG","$the_simpsons","$BIG","$a_lot_of_names","$a_lot_of_names"]]

使用 array_unique 和不使用它没有区别。

标签: phparraysarray-unique

解决方案


因为 preg match 输出就像

Array
(
  [0] => Array
    (
      [0] => ain
      [1] => AIN
      [2] => ain
      [3] => ain
    )
)

所以在 unique 中使用零索引

$output_array = array_unique($output_array[0]);

推荐阅读