PublicLogic.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace addons\Scratch\common\logic;
  3. use common\models\order\OrderDetail;
  4. /**
  5. * Class PublicLogic
  6. * @package addons\Scratch\common\logic
  7. */
  8. class PublicLogic
  9. {
  10. /**
  11. * in查询查询个数比较多,插分值进行or查询
  12. * @param $ziduan_name string 字段名称:user_id1
  13. * @param $inArray array in条件一长串字串:[1,2,3,4,....1001,1002]
  14. * @param int $fenduan_num 小于1000的数值,将原先过长的字段分段
  15. * @return string
  16. * @throws \ErrorException
  17. */
  18. public static function getOrWhereInArray(string $ziduan_name, array $inArray, int $fenduan_num = 500)
  19. {
  20. try {
  21. if(empty($inArray)){
  22. return [];
  23. }
  24. //总个数
  25. $count_num = count($inArray);
  26. //in条件正常写
  27. if ($count_num <= $fenduan_num) {
  28. return ['in', $ziduan_name, $inArray];
  29. }
  30. //in条件中数目过多的需要拆成几份,使用or拼接sql条件语句
  31. $i_count = ceil($count_num / $fenduan_num); //拆成总份数
  32. $tmp_data_arr = array_chunk($inArray, $fenduan_num);
  33. $where = [
  34. 'or'
  35. ];
  36. foreach ($tmp_data_arr as $item){
  37. $where[] = ['in', $ziduan_name, $item];
  38. }
  39. return $where;
  40. } catch (\ErrorException $errorException) {
  41. throw new \ErrorException($errorException->getMessage());
  42. } catch (\Exception $exception) {
  43. throw new \Exception($exception->getMessage());
  44. }
  45. }
  46. /**
  47. * 判断网址后否包含http || https
  48. * @param string $url 网址
  49. * @return boolean 真返回真,假返回假
  50. */
  51. public static function isHttp($url){
  52. if(preg_match("/^(http:\/\/|https:\/\/).*$/",$url)){
  53. return 1;
  54. }else{
  55. return 0;
  56. }
  57. }
  58. }