ZSetRangeByScore.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace Predis\Commands;
  3. class ZSetRangeByScore extends ZSetRange
  4. {
  5. public function getId()
  6. {
  7. return 'ZRANGEBYSCORE';
  8. }
  9. protected function prepareOptions($options)
  10. {
  11. $opts = array_change_key_case($options, CASE_UPPER);
  12. $finalizedOpts = array();
  13. if (isset($opts['LIMIT']) && is_array($opts['LIMIT'])) {
  14. $limit = array_change_key_case($opts['LIMIT'], CASE_UPPER);
  15. $finalizedOpts[] = 'LIMIT';
  16. $finalizedOpts[] = isset($limit['OFFSET']) ? $limit['OFFSET'] : $limit[0];
  17. $finalizedOpts[] = isset($limit['COUNT']) ? $limit['COUNT'] : $limit[1];
  18. }
  19. return array_merge($finalizedOpts, parent::prepareOptions($options));
  20. }
  21. protected function withScores()
  22. {
  23. $arguments = $this->getArguments();
  24. for ($i = 3; $i < count($arguments); $i++) {
  25. switch (strtoupper($arguments[$i])) {
  26. case 'WITHSCORES':
  27. return true;
  28. case 'LIMIT':
  29. $i += 2;
  30. break;
  31. }
  32. }
  33. return false;
  34. }
  35. }