【问题标题】:PHP array permission navigatorPHP数组权限导航器
【发布时间】:2015-10-07 13:22:27
【问题描述】:

我有以下功能:

        function navigation_permission($permission) {
        array(
        1 => array(
            array('name' => 'members','onclick' => 'test11'),
            array('name' => 'members','onclick' => 'test12'),
            array('name' => 'members','onclick' => 'test13').
            ),
        2 => array(
        array('name' => 'members','onclick' => 'test21'),
        array('name' => 'members','onclick' => 'test22'),
        array('name' => 'members','onclick' => 'test23'),
        )

        5 => array(
        array('name' => 'members','onclick' => 'test34'),
        array('name' => 'members','onclick' => 'test35'),
        )
        );

        // RETURN
    }

$permission 是一个从 0 到 6 的数字。

如何让它能够根据权限和数组中的键值返回数组?

以下是一些输出示例:

navigation_permission(6);

would return an array with all the other arrays, example:

    array(
    array('name' => 'members','onclick' => 'test11'),
 array('name' => 'members','onclick' => 'test12'),
 array('name' => 'members','onclick' => 'test13'),
 array('name' => 'members','onclick' => 'test21'),
 array('name' => 'members','onclick' => 'test22'),
 array('name' => 'members','onclick' => 'test23'),
 array('name' => 'members','onclick' => 'test34'),
 array('name' => 'members','onclick' => 'test35')
);

navigation_permission(3) 将返回上一个示例中的所有内容,除了包含 test34 和 test35 的两个数组,因为 5 高于 3。

navigation_permission(2) 将在 1 和 2 中返回相同的值。 navigation_permission(1) 将仅返回 1 中的数组。

示例二:

navigation_permission(3)

 array(
        array('name' => 'members','onclick' => 'test11'),
     array('name' => 'members','onclick' => 'test12'),
     array('name' => 'members','onclick' => 'test13'),
     array('name' => 'members','onclick' => 'test21'),
     array('name' => 'members','onclick' => 'test22'),
     array('name' => 'members','onclick' => 'test23'),
    );

问:如何让 navigation_permission 函数返回这种类型?

【问题讨论】:

  • 您好!你有没有试过研究PHP manuals?那里有很多数组函数,可以做任何你想做的事情,有完整的、易于获取和注释良好的示例。有搜索,排序,洗牌,分裂,推动,弹出,掉落,飞行,折叠,燃烧,只要读一读,试试看!如果您在尝试之后遇到问题,请在此处发布您的尝试和问题,我们会提供帮助!
  • 你能用勺子喂食什么功能来帮助我实现这一目标吗? @AlanMachado
  • 在那之前,我必须指出你的问题看起来像XY Problem。你真的想用这个函数做什么?也许有更好的方法来实现你想要的。

标签: php arrays multidimensional-array


【解决方案1】:

这将返回所有小于$permission的数组

 function navigation_permission($permission) {
            $initialArray = array(
            1 => array(
                array('name' => 'members','onclick' => 'test11'),
                array('name' => 'members','onclick' => 'test12'),
                array('name' => 'members','onclick' => 'test13').
                ),
            2 => array(
            array('name' => 'members','onclick' => 'test21'),
            array('name' => 'members','onclick' => 'test22'),
            array('name' => 'members','onclick' => 'test23'),
            ),

            5 => array(
            array('name' => 'members','onclick' => 'test34'),
            array('name' => 'members','onclick' => 'test35'),
            )
            );
            $returnArr = array();
            for($i=1; $i <= $permission; $i++){
               foreach($initialArray[$i] as $row){

                $returnArr[] = $row;
               }
             }
            return $returnArr;
        }

【讨论】:

    【解决方案2】:

    你可以使用类似这个函数的东西。

    function navigation_permission($permission)
    {
    
        $res = [];
    
        switch ($permission)
        {
            case 6:
                $res = array_merge($res,[
                    [ 'name' => 'members','onclick' => 'test11' ],
                    [ 'name' => 'members','onclick' => 'test12' ],
                    [ 'name' => 'members','onclick' => 'test13' ],
                ]);
    
            case 5:
                $res = array_merge($res,[
                        [ 'name' => 'members','onclick' => 'test11' ],
                        [ 'name' => 'members','onclick' => 'test12' ],
                        [ 'name' => 'members','onclick' => 'test13' ],
                    ]);
    
            case 4:
                $res = array_merge($res,[
                        [ 'name' => 'members','onclick' => 'test11' ],
                        [ 'name' => 'members','onclick' => 'test12' ],
                        [ 'name' => 'members','onclick' => 'test13' ],
                    ]);
    
            case 3:
                $res = array_merge($res,[
                        [ 'name' => 'members','onclick' => 'test11' ],
                        [ 'name' => 'members','onclick' => 'test12' ],
                        [ 'name' => 'members','onclick' => 'test13' ],
                    ]);
    
            case 2:
                $res = array_merge($res,[
                        [ 'name' => 'members','onclick' => 'test11' ],
                        [ 'name' => 'members','onclick' => 'test12' ],
                        [ 'name' => 'members','onclick' => 'test13' ],
                    ]);
    
            case 1:
                $res = array_merge($res,[
                        [ 'name' => 'members','onclick' => 'test11' ],
                        [ 'name' => 'members','onclick' => 'test12' ],
                        [ 'name' => 'members','onclick' => 'test13' ],
                    ]);
            break;
        }
    
        return $res;
    
    };
    

    是的,6 个案例中有 5 个没有 break 语句来提供您需要的功能:
    开关控制结构:Manual on php.net
    关于stackoverflow的讨论:switch statement without break

    【讨论】:

    • 欢迎来到 Stack Overflow!虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2019-03-14
    • 2022-12-13
    • 1970-01-01
    相关资源
    最近更新 更多