首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  PHP

如何支持任意多个参数传入调用 Redis 的 sUnion ( PHP )?

  •  
  •   zilan · 109 天前 · 349 次点击
    这是一个创建于 109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    避免使用 eval,或者迭代地调用 2 个

    效果大概像这样:

        function unionSets($redis, $keys)
        {
            if (!is_array($keys)) {
                return [];
            }
            $count = count($keys);
            $ret = [];
            switch ($count)
            {
                case 2:
                    $ret = $redis->sUnion($keys[0], $keys[1]);
                    break;
                case 3:
                    $ret = $redis->sUnion($keys[0], $keys[1], $keys[2]);
                    break;
                case 4:
                    $ret = $redis->sUnion($keys[0], $keys[1], $keys[2], $keys[3]);
                    break;
                case 5:
                    $ret = $redis->sUnion($keys[0], $keys[1], $keys[2], $keys[3], $keys[4]);
                    break;
                case 6:
                    $ret = $redis->sUnion($keys[0], $keys[1], $keys[2], $keys[3], $keys[4], $keys[5]);
                    break;
                case 7:
                    $ret = $redis->sUnion($keys[0], $keys[1], $keys[2], $keys[3], $keys[4], $keys[5], $keys[6]);
                    break;
                case 8:
                    $ret = $redis->sUnion($keys[0], $keys[1], $keys[2], $keys[3], $keys[4], $keys[5], $keys[6], $keys[7]);
                    break;
                case 9:
                    $ret = $redis->sUnion($keys[0], $keys[1], $keys[2], $keys[3], $keys[4], $keys[5], $keys[6], $keys[8], $keys[8]);
                    break;
                default:
                    $ret = $redis->sUnion($keys[0], $keys[1]);
                    break;
            }
            return $ret;
        }
    
        1
    echodone   109 天前
    func_get_args()、func_get_arg()与 func_num_args(),研究下这几个函数就可以了
        2
    zilan   109 天前
    @echodone 考虑过,关键是调用而不是被调用
        3
    suit   109 天前
    $redis->sUnion(...$keys);
    call_user_func_array([$redis, 'sUnion'], $keys);
        4
    zilan   109 天前
    @suit 感谢,忘记了
    下沉了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1439 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 16ms · UTC 17:06 · PVG 01:06 · LAX 09:06 · JFK 12:06
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1