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;
我有一个问题,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;