helpers_array.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. if (! function_exists('arrayReduceToOneColumn')) {
  3. function arrayReduceToOneColumn($array, $column_key) {
  4. return array_map(function($row) use ($column_key) {
  5. if (is_callable($column_key)) {
  6. return $column_key($row);
  7. } else {
  8. return $row[$column_key];
  9. }
  10. }, $array);
  11. }
  12. }
  13. if (! function_exists('arrayAddKeyFromColumn')) {
  14. function arrayAddKeyFromColumn($array, $column_key) {
  15. $results = array();
  16. foreach ($array as $row) {
  17. if (is_callable($column_key)) {
  18. $key = $column_key($row);
  19. } else if (is_array($column_key)) {
  20. $key_parts = [];
  21. foreach ($column_key as $column_key_item) {
  22. $key_parts[] = $row[$column_key_item];
  23. }
  24. $key = implode('-', $key_parts);
  25. }else{
  26. $key = $row[$column_key];
  27. }
  28. $results[$key] = $row;
  29. }
  30. if (empty($results)) {
  31. //return new stdClass();
  32. }
  33. return $results;
  34. }
  35. }
  36. if (! function_exists('arrayGroupByColumn')) {
  37. function arrayGroupByColumn($array, $column_key) {
  38. $results = array();
  39. foreach ($array as $k => $v) {
  40. if (is_callable($column_key)) {
  41. $key_value = $column_key($v);
  42. } else {
  43. $key_value = $v[$column_key];
  44. }
  45. if (! isset($results[$key_value])) {
  46. $results[$key_value] = array();
  47. }
  48. $results[$key_value][$k] = $v;
  49. }
  50. return $results;
  51. }
  52. }
  53. if (! function_exists('get_csv')) {
  54. function get_csv($arr, $fields=array(), $sep=";") {
  55. $str = '';
  56. if (! empty($arr)) {
  57. if (empty($fields)) {
  58. $fields = array_keys($arr[0]);
  59. }
  60. $line = array();
  61. foreach ($fields as $k => $v) {
  62. if (! is_numeric($k)) {
  63. $line[] = $k;
  64. } else {
  65. $line[] = $v;
  66. }
  67. }
  68. $str .= implode($sep, $line) . PHP_EOL;
  69. foreach ($arr as $row) {
  70. $line = array();
  71. foreach ($fields as $field) {
  72. $line[] = $row[$field];
  73. }
  74. //$str .= implode($sep, $line) . PHP_EOL;
  75. //$str .= '"' . implode('"' . $sep . '"', str_replace('"', '\\"', $line)) . '"' . PHP_EOL;
  76. $str .= '"' . implode('"' . $sep . '"', str_replace('"', '""', $line)) . '"' . PHP_EOL;
  77. }
  78. }
  79. return $str;
  80. }
  81. }