весь массив $product_value
передается как полный массив в функцию find_four()
. Однако find_four()
напрямую не использует значения в массиве $product_value
. Вместо этого полный массив передается рядом с функцией total_value()
.
total_value()
получает весь массив (называемый $player_value
в области действия функции find_four()
) и выполняет вычисления, используя все элементы массива. total_value()
получает массив и использует его элементы внутри цикла for
.
Из вашего вопроса не совсем ясно, что вы не понимаете, но, похоже, это часть передачи целого массива, а не отдельных значений. Массив может быть передан в функцию, и действительно все встроенные функции PHP array_*()
зависят от этого поведения.
По умолчанию PHP передает массивы между функциями по значению, а не по ссылке, поэтому функция получает копию исходного массива, а не оригинала. Любые изменения, переданные функцией в передаваемый массив, являются только локальными изменениями.
Массивы (как и любые значения) могут передаваться по ссылке, как в function_call(&$array)
, поэтому изменения внутри function_call()
изменят исходный массив, переданный ему. Некоторые встроенные модули, такие как sort()
, принимают ссылку на массив, поэтому действуют на переданный исходный массив, не возвращая его и не присваивая его переменной.
$input_array = array(1,2,3,4,5);
// Pass the whole array to a function (by value)
function showArray($input_array) {
print_r($input_array);
}
showArray($input_array);
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)