Короче, в функцию передаётся сложный массив с многоуровневыми вложениями. Для вложений определённого уровня нужно так: если это просто массив, перебрать его элементы, если это ассоциативный массив обычных массивов, перебрать их все отдельно. gettype обычные и ассоциативные массивы не различает. А чем они по факту в пыхе отличаются? Я так понял, обычный - это тот же ассоциативный, но без названий ключей (или там вместо ключей порядковые номера?) gettype($key) (число или строка) прокатит?