PHP. Почему массив неправильно передаётся в функцию без символа «&», при сортировке? Я только начинающий и поэтому всех тонкостей не знаю. В интернете тоже не нашел конкретный ответ.
В общем есть массив, его нужно отсортировать, с сортировкой я разобрался, не понимаю почему массив неправильно передаётся в функцию без символа "&" (function bubble_sort(&$array)). Для чего он? Т.е. без него, я попробовал, масив выводится, но не сортируется.
Вот код: $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
219 +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 Апр в 13:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир