Однозначно на ваш вопрос ответить нельзя.
После строки:
$xml = simplexml_load_file($url);
Напишите:
var_dump($xml);
Таким образом вы увидите что возвращает вам яндекс. Скорее всего там будет ошибка:
Запрос пришёл с IP-адреса, не входящего в список разрешённых для данного пользователя
Скорее всего в настройках
https://xml.yandex.ru/settings/ вы не указали IP-адрес, с которого будут совершаться запросы. Также второй вариант, вы указали IP-адрес версии v4, а сервер отправляет запросы с IPv6. В ошибке об этом будет написано, с какого адреса идут запросы. Вам нужно будет указать его в настройках, на указанной выше странице.
Другая причина, на вашем яндекс-аккаунте нет XML-лимитов, которые нужны для совершения запросов к яндексу. В этом случае вы можете воспользоваться сервисами, которые предоставляют такие лимиты.
Например
XMLstock.com - стоимость всего 4 рубля за 1000 запросов.
А так в целом скрипт рабочий. Запустил, проверил. позиции определяются.