Есть ли разница между этими двумя строками и какая должна быть использована в какой ситуации?
Ответ 1
intval работает медленнее, чем кастинг на int (это функция)
intval может принимать базу, если ее первым параметром является строка
Поскольку второй элемент действительно неясен, объективно следует сказать, что intval просто "хуже".
Однако лично мне нравится читать intval($var) лучше, чем (int)$var (последнему также может потребоваться обертка в дополнительных parens), и поскольку, если вы конвертируете в int внутри цикла, вы определенно делаете что-то неправильно, я использую intval.
Ответ 2
Все поведение объясняется здесь вместе с GOTCHAS...