简化if is case case php

时间:2011-11-24 14:21:32

标签: php

对不起,如果这是一个非常简单的问题,但我找不到与此相同的任何主题。

我们假设我们正在设置像

这样的值
    <li><input type="checkbox" name="only_admin" value="1" /> Only Admin</li>
    <li><input type="checkbox" name="can_request" value="1" /> Can Request</li>
    <li><input type="checkbox" name="can_offer" value="1" /> Can Offer</li>
    <li><input type="checkbox" name="can_post" value="1" /> Can Post</li>
    <li><input type="checkbox" name="is_maintenance" value="1" /> Is Maintenance</li>

然后在我们的服务器端,我们把这个

        if (isset($_POST['only_admin'])) {
            $permission['only_admin'] = $_POST['only_admin'];
        }

        if (isset($_POST['can_request'])) {
            $permission['can_request'] = $_POST['can_request'];
        }

        if (isset($_POST['can_offer'])) {
            $permission['can_offer'] = $_POST['can_offer'];
        }   

        if (isset($_POST['can_post'])) {
            $permission['can_post'] = $_POST['can_post'];
        }

        if (isset($_POST['is_maintenance'])) {
            $permission['is_maintenance'] = $_POST['is_maintenance'];
        }

上面的代码是否有更简单的版本?

谢谢! Adam Ramadhan

ps 如果已经有一个关于此的好主题,请给我贴上标签。*

6 个答案:

答案 0 :(得分:10)

$values = array("only_admin", 
                "can_request", 
                "can_offer", 
                "can_post", 
                "is_maintenance");

foreach($values as $v)
{
    if(isset($_POST[$v]))
    {
        $permission[$v] = $_POST[$v];
    }
}

答案 1 :(得分:4)

有一些方法可以简化它,看看这个...这不是唯一的解决方案,但它是一个干净的解决方案:

$permissions = array(
    'only_admin' => 0, 
    'can_offer' => 0,
    'can_request' => 0,
    'can_post' => 0,
    'is_maintenance' => 0,
);
foreach(array_keys($permissions) as $permission){
    if(isset($_POST[$permission])){
        $permissions[$permissions] = $_POST[$permission];
    }
}

你拥有的权限越多,这就越强大了!

答案 2 :(得分:2)

需要更多的工作,但为什么不使用:

$permission = $_POST;

您还可以添加in_array检查,以便$permission仅获取特定键,以防表单发送更多值。

答案 3 :(得分:1)

我认为您可以轻松地为此编写函数,因为$ _POST也是一个全局变量。例如:

<?php
function check_permissions() {
$permissions_array = array("only_admin", "can_request", "can_offer", "can_post", "is_maintenance");
foreach ($_POST as $p => $value)
{
  if (in_array($p, $permissions_array))
  { 
     $permission[$p] = $value;
  }
return $permission;
?>

}     ?&GT;

答案 4 :(得分:1)

请尝试:

<li><input type="checkbox" name="permission[only_admin]" value="1" /> Only Admin</li>
<li><input type="checkbox" name="permission[can_request]" value="1" /> Can Request</li>
<li><input type="checkbox" name="permission[can_offer]" value="1" /> Can Offer</li>
<li><input type="checkbox" name="permission[can_post]" value="1" /> Can Post</li>
<li><input type="checkbox" name="permission[is_maintenance]" value="1" /> Is Maintenance</li>

$permission[] = $_POST['permission'];

然后根据$permission[]过滤未设置的值

答案 5 :(得分:-1)

$permission['only_admin'] = isset($_POST['only_admin']);

等等。