Вспомнил, вы уже писал подобный пост. Если вы работаете только с числами и их значения должны быть нулевыми, то POST принимать надо с приведения его значений к iteger:
$_POST = array_map('intval', $_POST)
А далее проверка без всяких if(true==empty($_POST['hidden'])) и дальнейших if (isset($arr1))...
Работая с JSON, укажите методу .ajax тип данных dataType : "json"
Но в этом случае РНР сценарий должен возвращать именно этот формат, а не смесь, к примеру:
echo $errors[0] - а зачем тогда Error массив, если возвращается только первый его элемент при ошибке?
А если возвращается массив ошибок, то почему не в json формате?
return false - это из чего возврат, если это не функция и не цикл?