PHP. Почему массив неправильно передаётся в функцию без символа «&», при сортировке? Я только начинающий и поэтому всех тонкостей не знаю. В интернете тоже не нашел конкретный ответ.
В общем есть массив, его нужно отсортировать, с сортировкой я разобрался, не понимаю почему массив неправильно передаётся в функцию без символа "&" (function bubble_sort(&$array)). Для чего он? Т.е. без него, я попробовал, масив выводится, но не сортируется.
Вот код:<?php
function bubble_sort(&$array)
{
for ($i=0; $i < count($array); $i++)
{
for ($y=($i+1); $y $array[$y])
{
$c = $array[$i];
$array[$i] = $array[$y];
$array[$y] = $c;
}
}
}
}
$arr = array(92, 64, 87, 18, 17, 66, 50, 88, 99, 77);
bubble_sort($arr);
echo '';
print_r($arr);
echo '';
?>

21 Авг 2019 в 06:26
264 +1
0
Ответы
1

Когда вы передаете массив в функцию без символа "&", это значит, что функция работает с копией массива, а не самим массивом. Поэтому после вызова функции массив $arr не будет отсортирован, так как функция работает с копией массива, а не с самим массивом.

Символ "&" в параметре функции означает передачу массива по ссылке, а не по значению. Это означает, что функция будет работать с самим массивом, а не с его копией. Поэтому после вызова функции с символом "&", массив $arr будет отсортирован.

Простыми словами, если вы хотите, чтобы функция изменила сам массив, передавайте его по ссылке с помощью символа "&".

Поэтому, ваш код должен выглядеть так:

function bubble_sort(&$array)
{
for ($i=0; $i < count($array); $i++)
{
for ($y=($i+1); $y < count($array); $y++)
{
if ($array[$i] > $array[$y])
{
$c = $array[$i];
$array[$i] = $array[$y];
$array[$y] = $c;
}
}
}
}
$arr = array(92, 64, 87, 18, 17, 66, 50, 88, 99, 77);
bubble_sort($arr);
echo '<pre>';
print_r($arr);
echo '</pre>';
?>

Теперь массив $arr будет успешно отсортирован.

20 Апр 2024 в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир