Arr.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. *
  4. *User:Administrator
  5. *Date:2021/10/3
  6. */
  7. namespace app\common\lib;
  8. class Arr
  9. {
  10. /**
  11. * 数组分页显示
  12. * @param $array:数组
  13. * @param $page_number:当前页码
  14. * @param string $items:每页显示几条
  15. * @return array
  16. */
  17. public function Arr_page($array,$page_number,$items='')
  18. {
  19. if ($items) {
  20. $page_total = ceil(count($array) / $items);//总共有多少页
  21. $start= ($page_number-1)*$items; //计算偏移量
  22. $data=array_slice($array, $start, $items);
  23. }else{
  24. $page_total=1;
  25. $data = array_slice($array, 0);//如果不存在每页数量则全部显示
  26. }
  27. //todo 分页功能可以更加完善点,在controller里添加参数认证,这里可以再写一次
  28. return [
  29. 'page'=>[
  30. 'total'=>$page_total,//总页数
  31. 'current'=>$page_number,//当前页码
  32. 'items'=>$items,
  33. ],
  34. 'data'=>$data,
  35. ];
  36. }
  37. /**
  38. *移除二维数组中不要的字段
  39. * @param $arr
  40. * @param ...$args
  41. * @return mixed
  42. */
  43. public function Arr_remove($arr, ...$args)
  44. {
  45. foreach ($arr as $k => &$v) {
  46. foreach ($args as $a => $b) {
  47. unset($v[$b]);
  48. }
  49. }
  50. return $arr;
  51. }
  52. /**
  53. * 返回数组中指定多列
  54. * @param $array:需要取出数组列的多维数组
  55. * @param null $column_keys:要取出的列名,逗号分隔,如不传则返回所有列
  56. * @param null $index_key:作为返回数组的索引的列
  57. * @return array
  58. */
  59. function Arr_columns($array, $column_keys=null, $index_key=null){
  60. $result = array();
  61. $keys =isset($column_keys)? explode(',', $column_keys) : array();
  62. if($array){
  63. foreach($array as $k=>$v){
  64. // 指定返回列
  65. if($keys){
  66. $tmp = array();
  67. foreach($keys as $key){
  68. $tmp[$key] = $v[$key];
  69. }
  70. }else{
  71. $tmp = $v;
  72. }
  73. // 指定索引列
  74. if(isset($index_key)){
  75. $result[$v[$index_key]] = $tmp;
  76. }else{
  77. $result[] = $tmp;
  78. }
  79. }
  80. }
  81. return $result;
  82. }
  83. /**
  84. * 数组树状化
  85. * @param $arr
  86. * @param $parent_id
  87. * @return array
  88. */
  89. function Arr_tree($arr,$parent_id){
  90. $tmp_arr=[];
  91. foreach ($arr as $k=> $v){
  92. if($v['parent_id']==$parent_id){
  93. unset($arr[$k]);
  94. $v['children']=$this->Arr_tree($arr, $v['product_code']);
  95. $tmp_arr[]=$v;
  96. }
  97. }
  98. return $tmp_arr;
  99. }
  100. }