Почему PHP записывает два раза значение массива в Json?
Так у вас сплошной бардак в коде. Вы делаете обход foreach по переменной $taskList и меняете её значение внутри цикла. Естественно, на выходе может получиться что угодно.
$taskList[] = array//... вынес за foreach и отрабатывает как надо, как сказал Rsa97