检查数组中变量的相等性

时间:2013-11-26 14:47:44

标签: php

我想要一个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;   
}  

2 个答案:

答案 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进行比较