Задать вопрос

Плохо ли в функции передавать многомерные массивы?

Скрипт для выполнения различного функционала "генерирует" многомерный массив, большой вложенности (до 50 элементов суммарно). Затем этот массив отправляется в функцию в качестве аргумента. Проблема в том, что в функции используются далеко не все переменные (обычно не более 5). Но удобство в том, что мы по сути один и тот же массив передаем в разные функции, и они берут то, что им надо. Не будет ли считаться нагрузкой это "гуляние" многомерного массива по функциям? По сути это ведь занятая память
  • Вопрос задан
  • 123 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
50 элементов - это мелочи, ничего с вашей памятью не случится.

Но удобство в том, что мы по сути один и тот же массив передаем в разные функции, и они берут то, что им надо

А вот это удобство сомнительное, потому что вместо "чистого" принятия аргументов, которым можно задать тип и значение по умолчанию вы получаете "грязное" выковыривание данных из большого массива, да еще и вынуждены валидировать типы и проставлять значения по-умолчанию вручную. На мой взгляд выгода так себе.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@oleg_ods
Как вариант сделать этот массив неким подобием конфига, а функциям передавать только его элементы.

Но скорее всего Вам лучше пересмотреть логику приложения.
Ответ написан
Комментировать
@Vitsliputsli
""грязное" выковыривание данных", "невнятный клубок данных"

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

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽