ZSetUnionStore.php 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. namespace Predis\Commands;
  3. use Predis\Command;
  4. class ZSetUnionStore extends Command {
  5. public function getCommandId() { return 'ZUNIONSTORE'; }
  6. public function filterArguments(Array $arguments) {
  7. $options = array();
  8. $argc = count($arguments);
  9. if ($argc > 1 && is_array($arguments[$argc - 1])) {
  10. $options = $this->prepareOptions(array_pop($arguments));
  11. }
  12. $args = is_array($arguments[0]) ? $arguments[0] : $arguments;
  13. return array_merge($args, $options);
  14. }
  15. private function prepareOptions($options) {
  16. $opts = array_change_key_case($options, CASE_UPPER);
  17. $finalizedOpts = array();
  18. if (isset($opts['WEIGHTS']) && is_array($opts['WEIGHTS'])) {
  19. $finalizedOpts[] = 'WEIGHTS';
  20. foreach ($opts['WEIGHTS'] as $weight) {
  21. $finalizedOpts[] = $weight;
  22. }
  23. }
  24. if (isset($opts['AGGREGATE'])) {
  25. $finalizedOpts[] = 'AGGREGATE';
  26. $finalizedOpts[] = $opts['AGGREGATE'];
  27. }
  28. return $finalizedOpts;
  29. }
  30. }