Массивы передаются по ссылке или по значению в PHP?

Массивы передаются по ссылке или по значению в PHP?

Например, давайте посмотрим этот код.

function addWeight($arout, $lineCountry, $lineDomain, $target, $weight)
{
$currentDomain=getDomain();
$currentCountry=getCountry();

if ($currentCountry==$lineCountry && ($currentDomain == $lineDomain || $lineDomain==""))
{
$tarobreakpoint=0;
$arout [$target] =  intval($weight);
}

return $arout;
}

В основном это взял массив в качестве параметра. В зависимости от некоторых обстоятельств он добавляет элементы в массив. Интересно, это эффективно? Если $arout передается по ссылке, как и все массивы, тогда я думаю, что это эффективно. Но если он просто скопирован и передан по значению, то это не так.

Так каков приговор?

-5

Решение

Согласно руководство, Массивы PHP передаются по значению:

Назначение массива всегда включает копирование значений. Используйте оператор ссылки, чтобы скопировать массив по ссылке.

Если вы хотите передать ссылку на массив, используйте соответствующий оператор (&), как указано выше, и удалите return $arout; линия в addWeight() функция:

<?php
// pass $array by reference using & operator
addWeight(&$array, $lineCountry, $lineDomain, $target, $weight);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]