DataHandlerService.php 3.0 KB

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