我想要一个PHP程序来判断一个数组是否包含任何相同的数据。为此,我正在编写此代码,但它总是返回false,即使我在位置数组位置1和2处给出了相等的值。任何人都可以帮我找出这段代码的错误吗?
$a[0]=qwe;
$a[1]=abc;
$a[2]=abc;
$a[3]=xyz;
if(is_equal($a))
{
echo "True";
}
else
{
echo "False";
}
function is_equal($a)
{
$size=sizeof($a);
for ($i = 0; $i <= $size-2; $i++)
{
if ($a[i] === $a[i+1])
{
return true;
}
}
return false;
}
答案 0 :(得分:6)
您不需要为此编写函数,可以使用array_unique
:
if ($array !== array_unique($array))
{
// There were duplicate values
}
答案 1 :(得分:2)
您现有代码的问题在于
if ($a[i] === $a[i+1])
应该是
if ($a[$i] === $a[$i+1])
PHP变量以$
开头,否则i
被视为常量,而未定义常量,则字符串值为“i”
$a["i"]
不存在,因此它永远不会等于任何东西;并且$a[i+1]
将{1}添加1给1,因此它总是将不存在的数组元素与元素1进行比较