Php 函数使用变量引用

Php 函数使用变量引用,php,variables,reference,global,Php,Variables,Reference,Global,将我的$val推入$_后,可用[2]应为原始ret 我的$ret仍然返回一个空数组。 我100%确信$val不是空的,并且包含我测试过的另一个数组 我认为,问题在于通过引用传递 我希望避免在函数中使用return,因此这里的方法是通过引用传递。显然有一个bug, 在数组中传递引用变量时,数组将克隆该值 PHP数组不是C++之类的引用。 $ret = array(); $params = array( "conTableArry"=>array("

将我的$val推入$_后,可用[2]应为原始ret 我的$ret仍然返回一个空数组。 我100%确信$val不是空的,并且包含我测试过的另一个数组

我认为,问题在于通过引用传递

我希望避免在函数中使用return,因此这里的方法是通过引用传递。

显然有一个bug, 在数组中传递引用变量时,数组将克隆该值

PHP数组不是C++之类的引用。
$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;

返回值应该是1。

注意*这段代码中有重复的代码,我必须分离某些方法才能找到错误。
class obj_{
    $ret = 0;
    $set = 1;
    protected alpha() use (&$ret, &$set){
         function alpha_brava() use (&$ret, &$set){
             $ret += $set; 
        }
    }
}