PHP的引用举例


 
mongodb 是没有  id 自增的 
也就是 插入第一条 
id=1
插入第二条  id=2
 

我们写一个mongodb类
具体代码我就不说了 我这里就简单的列举一下
原型  $db->insert($data=array(),$options=array()){}

然后我们插入 数据的时候是这样的 
$db->insert(array("test"=>"测试")); //插入成功并没有id 
我们封装一个 insert 类

function insert(array $data,$options=[]){
        $this->before($data); //这里的befor 是引用$data
        return $this->db->insert($data,$options);
    }
 protected function before(&$data) {
             $pk='id';
            if(!isset($data[$pk])) {
         
                $data[$pk]   =  $this->id($pk);
            }
    }

   

来看 before 的原型 (&$data)
检测到 $data数组不存$data['id']
$data['id']=id()//自增字段

来看一下id的函数 ()
protected function id($pk) {
       $result   =  $this->find(array(),array($pk=>1))->sort(array($pk=>-1))->limit(1); //查询字段id 
        $data = $result->getNext(); //获取下一条数据
        return isset($data[$pk])?$data[$pk]+1:1; //不存在id id默认1 存在+1
    }

回到刚才的插入 $db->insert(array("test"=>"测试")); 
因为再插入之前增加了一个引用函数before
那么 数组就变成了 array("test"=>"测试","id"=>1) //存在就是id+1
原文地址:https://www.cnblogs.com/freespider/p/2811556.html