考虑以下数组..
$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?也许首先在值上使用条带标签?
答案 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) );