Плохо ли в функции передавать многомерные массивы?
50 элементов - это мелочи, ничего с вашей памятью не случится.Но удобство в том, что мы по сути один и тот же массив передаем в разные функции, и они берут то, что им надо
А вот это удобство сомнительное, потому что вместо "чистого" принятия аргументов, которым можно задать тип и значение по умолчанию вы получаете "грязное" выковыривание данных из большого массива, да еще и вынуждены валидировать типы и проставлять значения по-умолчанию вручную. На мой взгляд выгода так себе.
""грязное" выковыривание данных", "невнятный клубок данных"
А если бы вы написали что передаете объект в метод, а в этом методе используется только 10% свойств переданного объекта, вам бы написали, что это абсолютно нормально. Хотя по-сути это тоже самое.
Имхо, если здесь проблема и есть, то не в самом способе, а в данных, которые передаете. Если это логически связанные данные, то вполне нормально. Если это разрозненные данные, например конфигурация, то лучше пусть разбором будет заниматься отдельная процедура.
50 элементов это, конечно, мелочи, но если все-равно не хочется постоянно делать новые копии, передавайте по ссылке.