PHP: in_array 未返回 true

PHP: in_array not returning true

我有一个问题,in_array 即使数组中有重复项也不会返回 true。在这个网站上做了一些研究后,我发现很多 Windows 用户由于不可见的换行符 \r\n 等而遇到问题,但情况似乎并非如此,因为在打印了每个字符的长度之后字符串,它与我所拥有的相匹配(没有不可见字符)。不过,我的代码似乎无法将新值与数组中已有的值相匹配:

$XMLName = "file.xml";
$XMLFile = simplexml_load_file($XMLName);

$categories = array();
$i = 0;

foreach($XMLFile as $ReadFile) {
    $cat = $ReadFile->CategoryName;

    $IsInArray = in_array($cat, $categories);

    if($IsInArray == FALSE) {
        $categories[$i] = $cat;
        $i++;
    }
}

foreach($categories as $category) {
    echo $category . "<br />";
}

有人知道为什么会这样吗?

尝试替换行:

$cat = $ReadFile->CategoryName;

这个:

$cat = trim($ReadFile->CategoryName->__toString());

正如@Jamil 所说,您最好更换:

$categories[$i] = $cat; $i++;

只有

$categories[] = $cat;