DataHandlerService.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Services\common;
  3. class DataHandlerService
  4. {
  5. public function dataHeader(array $mapKeys= [], $resultData =[]){
  6. $handlerData = [];
  7. foreach ($resultData as $data) {
  8. $key = $this->getKey($mapKeys,$data);
  9. $handlerData[$key] = $data;
  10. }
  11. $handlerData['mapkey'] = $mapKeys;
  12. return $handlerData;
  13. }
  14. /**
  15. * 只支持三层的寻找
  16. * @param array $mapKeyArr
  17. * @param array $resultData
  18. */
  19. public function dataHeaders(array $mapKeyArr = [], $resultData =[]){
  20. $handlerData_list = [];
  21. $level_1_key = $mapKeyArr[0][0] ?? false; unset($mapKeyArr[0][0]);
  22. $level_2_key = $mapKeyArr[1][0] ?? false; unset($mapKeyArr[1][0]);
  23. $level_3_key = $mapKeyArr[2][0] ?? false; unset($mapKeyArr[2][0]);
  24. $level_1_keys =$mapKeyArr[0] ?? false;
  25. $level_2_keys =$mapKeyArr[1] ?? false;
  26. $level_3_keys =$mapKeyArr[2] ?? false;
  27. if($level_1_key || $level_1_key==''){
  28. foreach ($resultData as $level_1_data) {
  29. if(!$level_1_keys){continue;}
  30. $key = $this->getKey($level_1_keys,$level_1_data);
  31. if($level_1_key==''){
  32. $level_2_data_list = $level_1_data;
  33. }else{
  34. $level_2_data_list = $level_1_data[$level_1_key];
  35. }
  36. if($level_2_key || $level_2_key==''){
  37. if(!$level_2_keys){continue;}
  38. foreach ($level_2_data_list as $level_2_data) {
  39. $key .= $this->getKey($level_2_keys, $level_2_data);
  40. $level_3_data_list = $level_2_data[$level_1_key];
  41. if ($level_3_key || $level_3_key=='') {
  42. if (!$level_3_keys) {
  43. continue;
  44. }
  45. foreach ($level_3_data_list as $level_3_data) {
  46. $key .= $this->getKey($level_3_keys, $level_3_data);
  47. $handlerData_list[$key] =$level_3_data;
  48. }
  49. }else{
  50. $handlerData_list[$key] =$level_2_data;
  51. }
  52. }
  53. }else{
  54. $handlerData_list[$key] =$level_1_data;
  55. }
  56. }
  57. }
  58. $handlerData['mapkey'] = array_merge($level_1_keys,$level_2_keys ?? [],$level_3_keys ?? []);
  59. return $handlerData_list ?? null;
  60. }
  61. private function getKey($keys,$object){
  62. $mapKey = '';
  63. foreach ($keys as $key){
  64. $mapKey .= $key.'='.$object[$key];
  65. }
  66. return $mapKey;
  67. }
  68. public function getKeyValue($keyValues,$data){
  69. $mapkeys = $data['mapkey'];
  70. $key = '';
  71. foreach ($mapkeys as $mapkey) {
  72. $key .=$mapkey.'='.$keyValues[$mapkey];
  73. }
  74. return $data[$key] ?? null;
  75. }
  76. }