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>В сигнатуре функции перед именем переменной ставится знак &, а в теле функции происходит прямое изменение без возврата.</p>
5
<p>В сигнатуре функции перед именем переменной ставится знак &, а в теле функции происходит прямое изменение без возврата.</p>
6
<p>Как лучше проектировать функции: с передачей по ссылке или по значению? В подавляющем большинстве случаев лучше использовать второй вариант. Удобнее работать с функциями, возвращающими значения - поведение программы становится более предсказуемым, потому что нет неконтролируемых изменений данных. Первый подход лучше просто никогда не использовать.</p>
6
<p>Как лучше проектировать функции: с передачей по ссылке или по значению? В подавляющем большинстве случаев лучше использовать второй вариант. Удобнее работать с функциями, возвращающими значения - поведение программы становится более предсказуемым, потому что нет неконтролируемых изменений данных. Первый подход лучше просто никогда не использовать.</p>
7
<p>Изменение массивов напрямую сложнее в отладке, но в некоторых языках повышает эффективность работы. Если массив достаточно большой, то полное копирование окажется дорогой операцией. В реальной жизни веб-разработчика это почти никогда не считается проблемой, но знать об этом полезно.</p>
7
<p>Изменение массивов напрямую сложнее в отладке, но в некоторых языках повышает эффективность работы. Если массив достаточно большой, то полное копирование окажется дорогой операцией. В реальной жизни веб-разработчика это почти никогда не считается проблемой, но знать об этом полезно.</p>