HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Обычно функции, работающие с массивами, после обработки возвращают новый массив. Но бывает и по-другому. Как правило, в таких функциях не используется возврат. Они меняют исходный массив напрямую за счет использования ссылок. Например, к таким функциям относится сортировка:</p>
1 <p>Обычно функции, работающие с массивами, после обработки возвращают новый массив. Но бывает и по-другому. Как правило, в таких функциях не используется возврат. Они меняют исходный массив напрямую за счет использования ссылок. Например, к таким функциям относится сортировка:</p>
2 <p>Обратите внимание, что в коде выше мы не пишем $sortedNumbers = sort($numbers). Функция sort() не возвращает отсортированный новый массив. Вместо этого, она меняет массив, на который ссылается $numbers. Если изменение исходного массива прошло успешно, функция возвращает булево значение true, если неуспешно - false:</p>
2 <p>Обратите внимание, что в коде выше мы не пишем $sortedNumbers = sort($numbers). Функция sort() не возвращает отсортированный новый массив. Вместо этого, она меняет массив, на который ссылается $numbers. Если изменение исходного массива прошло успешно, функция возвращает булево значение true, если неуспешно - false:</p>
3 <p>Кроме того, такие функции не умеют работать со значениями, которые не присвоены переменным. Так происходит, потому что на них нельзя получить ссылки:</p>
3 <p>Кроме того, такие функции не умеют работать со значениями, которые не присвоены переменным. Так происходит, потому что на них нельзя получить ссылки:</p>
4 <p>С точки зрения устройства такие функции выглядят следующим образом:</p>
4 <p>С точки зрения устройства такие функции выглядят следующим образом:</p>
5 <p>В сигнатуре функции перед именем переменной ставится знак &amp;, а в теле функции происходит прямое изменение без возврата.</p>
5 <p>В сигнатуре функции перед именем переменной ставится знак &amp;, а в теле функции происходит прямое изменение без возврата.</p>
6 <p>Как лучше проектировать функции: с передачей по ссылке или по значению? В подавляющем большинстве случаев лучше использовать второй вариант. Удобнее работать с функциями, возвращающими значения - поведение программы становится более предсказуемым, потому что нет неконтролируемых изменений данных. Первый подход лучше просто никогда не использовать.</p>
6 <p>Как лучше проектировать функции: с передачей по ссылке или по значению? В подавляющем большинстве случаев лучше использовать второй вариант. Удобнее работать с функциями, возвращающими значения - поведение программы становится более предсказуемым, потому что нет неконтролируемых изменений данных. Первый подход лучше просто никогда не использовать.</p>
7 <p>Изменение массивов напрямую сложнее в отладке, но в некоторых языках повышает эффективность работы. Если массив достаточно большой, то полное копирование окажется дорогой операцией. В реальной жизни веб-разработчика это почти никогда не считается проблемой, но знать об этом полезно.</p>
7 <p>Изменение массивов напрямую сложнее в отладке, но в некоторых языках повышает эффективность работы. Если массив достаточно большой, то полное копирование окажется дорогой операцией. В реальной жизни веб-разработчика это почти никогда не считается проблемой, но знать об этом полезно.</p>