Php 检查数组是否唯一(但0可以重复)

Php 检查数组是否唯一(但0可以重复),php,Php,我有以下数组: $check = array( $_POST["list1"], $_POST["list2"], $_POST["list3"], $_POST["list4"], $_POST["list5"], $_POST["list6"], $_POST["list7"], $_POST["list8"], $_POST["list9"], $_POST["list10"], ); 我想检查此数组中的所有值是否唯一(0是唯一可以重复的值)。 因

我有以下数组:

$check = array(
  $_POST["list1"],
  $_POST["list2"],
  $_POST["list3"],
  $_POST["list4"],
  $_POST["list5"],
  $_POST["list6"],
  $_POST["list7"],
  $_POST["list8"],
  $_POST["list9"],
  $_POST["list10"],
);
我想检查此数组中的所有值是否唯一(0是唯一可以重复的值)。 因此: 1,2,5,7,7,0,0,4,2,1->错误 1,2,3,0,0,0,0,7,8,9->确定 有什么想法吗?


PHP5.3

$result = array_reduce ($check, function ($valid, $value) {
  static $found = array();
  if (!$valid || (($value != 0) && in_array($value, $found))) {
    return false;
  } else {
    $found[] = $value;
    return true;
  }
}, true);

有几种方法。例如,删除
0
并调用
array\u unique
并比较数组。。。。你的选择。
$result = array_reduce ($check, function ($valid, $value) {
  static $found = array();
  if (!$valid || (($value != 0) && in_array($value, $found))) {
    return false;
  } else {
    $found[] = $value;
    return true;
  }
}, true);
$counted = array_count_values($check);
unset($counted[0], $counted['0']); // Ignore "0" (dont know, if its an integer or string)
$valid = (count($counted) == array_sum($counted));