функция использует ссылку на переменную

$ret = array();

$params = array(
"conTableArry"=>array("connection"=> parent::PDO_("geo", false),"table"=>"locations"),
"fields"=>array("ID", "LOCALITY_ID", "COUNTY", "LAT_", "LONG_", "ZIPCODE"),
"condArry"=>$condArry,
"LIMIT"=>2
);
parent::search($params, function($location) use (&$ret){
echo "a";
$params = array(
"conTableArry"=>array("connection"=> parent::PDO_("geo", false),"table"=>"locality"),
"fields"=>array("ID","NAME","PROVINCE_ID"),
"condArry"=>array(array("ID",$location["LOCALITY_ID"])),
"LIMIT"=>2
);
$_usable_ = array($location, $ret);
parent::search($params, function($locality) use (&$_usable_){
$params = array(
"conTableArry"=>array("connection"=> parent::PDO_("geo", false),"table"=>"provinces"),
"fields"=>array("ID","NAME","ABBR"),
"condArry"=>array(array("ID",$locality["PROVINCE_ID"])),
"LIMIT"=>2
);
$_usable_ = array($_usable_[0], $locality, $_usable_[1]);
parent::search($params, function($province) use(&$_usable_){
**$val = array($_usable_[0], $_usable_[1], $province);
echo "<br>-";
print_r($val);
echo "<br>-";
print_r($_usable_[0]);
echo "<br>-";
print_r($_usable_[0]);
echo "<br>-";
print_r($province);
echo "<br>-";
array_push($_usable_[2], $val);**
});
});
});
return $ret;

когда после нажатия моего $ val в $ _usable [2] (должен быть оригинальный ret)
Мой $ ret по-прежнему возвращает пустой массив.
Я на 100% уверен, что $ val не равен NULL и содержит другой массив (я проверял это).

Проблема заключается в передаче по ссылке, я верю.

Я хотел бы избежать использования возврата внутри функции, поэтому переход по ссылке — вот путь.

0

Решение

Видимо, есть ошибка,
При передаче ссылочной переменной внутри массива массив клонирует значение.

Массивы PHP не являются ссылками, такими как C ++.

class obj_{
$ret = 0;
$set = 1;
protected alpha() use (&$ret, &$set){
function alpha_brava() use (&$ret, &$set){
$ret += $set;
}
}
}

возврат должен быть 1.

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector