array_unique删除span中的重复值

时间:2017-02-09 16:03:43

标签: php arrays

考虑以下数组..

$a = array(
  'a' => 'red',
  'b' => 'green',
  'c' => 'red'
);
print_r(array_unique($a));

你会得到

  

数组([a] => red [b] =>绿色)

我有一个数组,在值中使用<span>给它们一个类。

$a = array(
  'a' => '<span class="available">red</span>',
  'b' => '<span class="available">green</span>',
  'c' => '<span class="booked">red</span>'
);
print_r(array_unique($a));

你得到了

  

数组([a] =&gt;红色[b] =&gt;绿色[c] =&gt;红色)

这是因为对于类,它们不再是唯一的。

有没有办法只使用字符串的一部分来使用array_unique?也许首先在值上使用条带标签?

2 个答案:

答案 0 :(得分:2)

所以strip_tags()是个好主意:

$result = array_intersect_key($a, array_unique(array_map('strip_tags', $a)));
  • 映射数组以使用array_map()
  • 剥离标记
  • 使用array_unique()
  • 获取唯一值
  • 从原始数组中获取具有公共键的元素,其中包含具有array_intersect_key()
  • 的唯一数组

这会产生:

Array
(
    [a] => <span class="available">red</span>
    [b] => <span class="available">green</span>
)

如您所见,它将返回 red 的第一个值。

答案 1 :(得分:0)

如果你想从span标签中获取唯一值,你可以如你所说,首先简单地剥离标签,然后打印唯一值。

$a = array(
  'a' => '<span class="available">red</span>',
  'b' => '<span class="available">green</span>',
  'c' => '<span class="booked">red</span>'
);


foreach ($a as $val) {
    $b[] = strip_tags($val);
}


print_r( array_unique($b) );