嗨,我想说我有这个阵列:
$check_post = array(
$_POST["a_post"],
$_POST["b_post"],
$_POST["c_post"],
$_POST["d_post"],
$_POST["e_post"],
$_POST["f_post"],
$_POST["g_post"],
$_POST["h_post"],
$_POST["i_post"]
);
我想检查这个数组的任何元素是否重复,所以我得到的最好的是:
if (count(array_unique($check_post)) < count($check_post))
echo "Duplicate";
else
echo "NO Duplicate";
哪个工作正常,除非事实上如果多一个textarea留空(允许),它就会给我带来错误。
我想要的是不考虑(count(array_unique())
BTW我尝试过使用empty()
和array_values($check_post)
,但我无法绕过它。
提前致谢!!请询问任何必要的澄清。
答案 0 :(得分:8)
要从比较中删除所有空值,您可以添加array_diff()
:
if (count(array_unique(array_diff($check_post,array("")))) < count(array_diff($check_post,array(""))))
答案 1 :(得分:2)
你的方式很好,但正如你所说,你需要先删除空条目。
$non_empty_check_post = array_filter($check_post, create_function('$item', 'return !empty($item);');
if (count(array_unique($non_empty_check_post)) < count($non_empty_check_post)) {
echo "Duplicate";
} else {
echo "NO Duplicate";
}
答案 2 :(得分:2)
过滤掉阵列中的空白:
function no_blanks($val) {
// Do not use empty() here if you don't consider the string "0" as blank
return trim($val) !== '';
}
$check_post = array_filter($check_post, 'no_blanks');
if (count(array_unique($check_post)) < count($check_post))
echo "Duplicate";
else
echo "NO Duplicate";
答案 3 :(得分:1)
if (count(array_unique(array_filter(function(x) {return !empty(x)}, $check_post)) < count($check_post))
echo "Duplicate";
else
echo "NO Duplicate";