Надо еще добавить, что первый и сам по себе бессмысленный, поскольку сравнивает булево значение с числом. И в нормальном варианте должен писаться, как if(!isset($data[26])){
isset и empty - это не "положенные стандарты", а как раз наоборот - костыли. И я об этом в каком-то из комментариев уже писал.
Но главное - это сразу становится понятным, если немного подумать головой.
Эти ошибки, Undefined array key - они не для того, чтобы программист задолбался.
А вы их воспринимаете именно так. Вы считаете, что создатели языка заставляют вас везде писать isset и empty. Но это же глупость - писать код только для того, чтобы задавить сообщение об ошибке!
Задача этих ошибок не в том, чтобы программист все время как обезьяна везде писал isset и empty.
Любые сообщения об ошибках - служат для помощи программисту.
Данная ошибка подсказывает, что программист пытается обратиться к переменной, или элементу массива которых нет.
И увидев эту ошибку, программист не должен тупо затыкать ей рот через isset! А должен разобраться - почему вдруг нет нужной переменной.
То есть "положенные стандарты" - это чтобы переменная всегда была на месте.
Мало того что это сильно упрощает код - без всех этих isset и empty - но главное, эти ошибки начнут реально приносить пользу, когда программист реально ошибется в имени переменной или попытается обратиться к несуществующему элементу массива.
А то что вы делаете сейчас - это то же самое подавление ошибок, вид сбоку.
Причем array_pad - это тоже костыль. И по идее, надо приводить свои файлы в порядок, чтобы в них не было пустых ячеек. Но на данном этапе использование array_pad оправдано, поскольку приводит все массивы к единому виду. То есть делает то, что вы хотели изначально - чтобы if($arrdata[19]>0){ не вызывало ошибок. Потому что в $arrdata всегда будет нужное число колонок.
я же написал в ответе. array_pad добьёт недостающие колонки пустыми строками.
Например explode вернула 10 колонок, а надо 20.
Вот в array_pad написать 20 и в массиве будет 20 колонок - и ошибок не будет при обращении к любому элементу
AUser0, вообще-то $a=($a ?? 0)+$line[$u];
Но суть тут не в этом. Вы здесь предлагаете использовать isset для подавления ошибок.
Но это противоречит тому, что вы писали выше.
В идеале isset вообще не должен применяться для внутренних переменных в коде, только для пришедших извне, которые программист не контролирует
А все внутренние должны быть заведомо инициализированы. Чтобы этот варнинг начал использоваться по назначению - сообщать программисту о неправильном имени переменной.