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 ''; ?>
Когда вы передаете массив в функцию без символа "&", это значит, что функция работает с копией массива, а не самим массивом. Поэтому после вызова функции массив $arr не будет отсортирован, так как функция работает с копией массива, а не с самим массивом.
Символ "&" в параметре функции означает передачу массива по ссылке, а не по значению. Это означает, что функция будет работать с самим массивом, а не с его копией. Поэтому после вызова функции с символом "&", массив $arr будет отсортирован.
Простыми словами, если вы хотите, чтобы функция изменила сам массив, передавайте его по ссылке с помощью символа "&".
Когда вы передаете массив в функцию без символа "&", это значит, что функция работает с копией массива, а не самим массивом. Поэтому после вызова функции массив $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 будет успешно отсортирован.