PHP:in_array没有返回true

时间:2015-01-18 20:56:19

标签: php xml simplexml

我有一个问题,即使重复项在数组中,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 />";
}

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

1 个答案:

答案 0 :(得分:0)

尝试替换行:

$cat = $ReadFile->CategoryName;

这一个:

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

并且@Jamil说你应该更好地替换:

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

只是

$categories[] = $cat;