У меня проблема с in_array, которая не возвращает true, даже если дубликаты находятся в массиве. Проведя некоторые исследования на этом сайте, я обнаружил, что у многих пользователей Windows есть проблемы из-за невидимых разрывов строк и т.д., Но это, похоже, не так, потому что после печати длины каждой строки она совпадает с что у меня (нет невидимых персонажей). Тем не менее, мой код, похоже, не в состоянии сопоставить новые значения с тем, что уже находится в массиве:
$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;
$cat
массивом? Я сомневаюсь.