Thinkphp5分页函数paginate中的each()传入自定义参数

 6684

这篇教程来学习Thinkphp5分页函数paginate中的each()传入自定义参数的方法,如果在each函数中想要调用外面的函数或者变量怎么办?

如果在each()函数内调用外部变量,会发现直接报变量不存在的错误

  1. ->paginate($rows,false,['query'=>$where])->each(function($item){
  2.             dump($tmp); // 外部参数
  3.             $item['typename'] = .....;
  4.         })

这时会报错,如下:


Thinkphp5分页函数paginate中的each()传入自定义参数


然后我觉得是变量作用域问题,于是在each()里加了个global声明

  1. ->paginate($rows,false,['query'=>$where])->each(function($item){
  2.             global $tmp;
  3.             dump($tmp);
  4.             $item['typename'] = .....;
  5.         })

虽然不报变量不存在了,但是打印出来的值是null,还是没有调用到外面的变量


Thinkphp5分页函数paginate中的each()传入自定义参数


最后,在each()函数后调用一个use函数,即可传参成功

  1. ->paginate($rows,false,['query'=>$where])->each(function($item) use($tmp)/*添加的参数*/{
  2.             dump($tmp);
  3.             $item['typename'] = .....;
  4.         })


Thinkphp5分页函数paginate中的each()传入自定义参数


如果在函数中需要修改变量的值,会发现在函数内,变量的值改变了,但是函数外面的变量值还是没变

  1. ->paginate($rows,false,['query'=>$where])->each(function($item) use($tmp){
  2.             $tmp = $tmp + 1;
  3.             dump($tmp. '"tmp1"');
  4.             $item['typename'] =  .....;
  5.         })


Thinkphp5分页函数paginate中的each()传入自定义参数

这就是函数内外的变量作用域问题了,加一个&符即可解决

  1. ->paginate($rows,false,['query'=>$where])->each(function($item) use(&$tmp){
  2.             $tmp = $tmp + 1;
  3.             dump($tmp. '"tmp1"');
  4.             $item['typename'] =  ....;
  5.         })


Thinkphp5分页函数paginate中的each()传入自定义参数


总结

就是在 each(function($item){})中加入 use(&$tmp) 即可,如:

  1. each(function($item) use(&$tmp){})

你学会了吗?


本文网址:https://www.zztuku.com/index.php/detail-10264.html
站长图库 - Thinkphp5分页函数paginate中的each()传入自定义参数
申明:本文转载于《csdn - phpsolo》,如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐