functions.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace tests;
  3. use think\db\ConnectionInterface;
  4. use think\facade\Db;
  5. use function array_column;
  6. use function array_combine;
  7. use function array_map;
  8. use function call_user_func;
  9. use function is_callable;
  10. use function is_int;
  11. use function sort;
  12. function array_column_ex(array $arr, array $column, ?string $key = null): array
  13. {
  14. $result = array_map(function ($val) use ($column) {
  15. $item = [];
  16. foreach ($column as $index => $key) {
  17. if (is_callable($key)) {
  18. $item[$index] = call_user_func($key, $val);
  19. } elseif (is_int($index)) {
  20. $item[$key] = $val[$key];
  21. } else {
  22. $item[$key] = $val[$index];
  23. }
  24. }
  25. return $item;
  26. }, $arr);
  27. if (!empty($key)) {
  28. $result = array_combine(array_column($arr, 'id'), $result);
  29. }
  30. return $result;
  31. }
  32. function array_value_sort(array $arr)
  33. {
  34. foreach ($arr as &$value) {
  35. sort($value);
  36. }
  37. }
  38. function query_mysql_connection_id(ConnectionInterface $connect): int
  39. {
  40. $cid = $connect->query('SELECT CONNECTION_ID() as cid')[0]['cid'];
  41. return (int) $cid;
  42. }
  43. function mysql_kill_connection(string $name, $cid)
  44. {
  45. Db::connect($name)->execute("KILL {$cid}");
  46. }