Php 分配简单的变量值,稍后进行测试-防止重复代码的最佳方法?

Php 分配简单的变量值,稍后进行测试-防止重复代码的最佳方法?,php,refactoring,Php,Refactoring,我该如何改进这段代码,以避免重复同一个函数?我正在努力为此创建一个函数,因为变量名需要专门设置,以便稍后在代码中使用 代码在这里 if (in_array("knownValue", $array)) { $variableA = true; } else { $variableA = false; } if (in_array("knownValue", $array)) { $variableB = true; } else { $variableB = fa

我该如何改进这段代码,以避免重复同一个函数?我正在努力为此创建一个函数,因为变量名需要专门设置,以便稍后在代码中使用

代码在这里

if (in_array("knownValue", $array)) {
    $variableA = true;
} else {
    $variableA = false;
}
if (in_array("knownValue", $array)) {
    $variableB = true;
} else {
    $variableB = false;
}
if (in_array("knownValue", $array)) {
    $variableC = true;
} else {
    $variableC = false;
}
if (in_array("knownValue", $array)) {
    $variableD = true;
} else {
    $variableD = false;
}
稍后在代码中用作

if ($variableA) {
    //do stuff...
} else {
    //do other stuff...
}
if ($variableB) {
    //do stuff...
} else {
    //do other stuff...
}
etc...
编辑-


谢谢,我想我只是需要睡一觉!设法将代码压缩为

<select class='selectpicker width100 updateAbilities' name='staffAbliities[]' multiple>";
    function renderOption($ability, $title, $array) {
            if (in_array($ability, $array)) {
                echo "
        <option data-content='<img src='images/abilities/$ability.png'> $title' value='$ability' selected>
            $title
        </option>";
    } else {
        echo "
            <option data-content='<img src='images/abilities/$ability.png'> $title' value='$ability'>
                $title
            </option>";
        }
    }
    renderOption("ops", "Operations Manager", $abilities);
    renderOption("guide_manager", "Guide Manager", $abilities);
    renderOption("senior_guide", "Senior Guide", $abilities);
    renderOption("guide", "Guide", $abilities);
    renderOption("trainee_guide", "Trainee Guide", $abilities);
    renderOption("big_bus", "Full PCV License", $abilities);
    renderOption("small_bus", "Small PCV License", $abilities);
    renderOption("wfr", "Wilderness First Responder", $abilities);
    renderOption("ice_climber", "Ice Climber", $abilities);
    echo "
</select>
”;
函数渲染($ability、$title、$array){
if(在数组中($ability,$array)){
回声“
$title
";
}否则{
回声“
$title
";
}
}
渲染(“ops”、“运营经理”、“能力”);
渲染(“向导管理器”、“向导管理器”、“能力”);
渲染(“高级向导”、“高级向导”、“能力”);
渲染(“向导”、“向导”、“能力”);
呈现(“学员指南”、“学员指南”、“能力”);
渲染(“big_总线”、“完整PCV许可证”、$Capabilities);
渲染(“小型_总线”、“小型PCV许可证”、$Capabilities);
渲染(“wfr”、“荒野第一响应者”、$Capabilities);
渲染(“冰上攀岩者”、“冰上攀岩者”、$能力);
回声“

我认为首先检查变量是不必要的。 没有第一部分,您的代码可以正常工作。你可以试试这个

$yourKeyForCheck = 'knownValue'

 if (array_value($yourKeyForCheck, $array)) {
   //do stuff 
 } else {
   //do other stuff...
 }
编辑: 我认为这是一个更优雅的决定

$aOptions = [
    [   'name'          =>  'ops',
        'title'         =>  'Operations Manager',
        'abilities'     =>  $abilities,
    ],
    [   'name'          =>  'guide_manager',
        'title'         =>  'Guide Manager',
        'abilities'     =>  $abilities,
    ],
    [   'name'          =>  'senior_guide',
        'title'         =>  'Senior Guide',
        'abilities'     =>  $abilities,
    ],
    [   'name'          =>  'guide',
        'title'         =>  'Guider',
        'abilities'     =>  $abilities,
    ],
    [   'name'          =>  'ops',
        'title'         =>  'Operations Manager',
        'abilities'     =>  $abilities,
    ],
];

<select class='selectpicker width100 updateAbilities' name='staffAbliities[]' multiple>";
<?php forech($aOptions as $aOption) { ?>
    <option 
        data-content='<img src='images/abilities/$ability.png'>
        <?php echo $aOption['title']?>';
        value='<?php echo $aOption['abilities']; ?>'
        <?php echo in_array($ability, $array)? selected : '' ?>
        $title
    </option>";
<?php } ?>
</select>
$aooptions=[
['name'=>'ops',
“标题”=>“运营经理”,
“能力”=>$能力,
],
['name'=>'guide_manager',
“标题”=>“指南管理器”,
“能力”=>$能力,
],
[“姓名”=>“高级指南”,
“标题”=>“高级指南”,
“能力”=>$能力,
],
[“名称”=>“指南”,
“标题”=>“向导”,
“能力”=>$能力,
],
['name'=>'ops',
“标题”=>“运营经理”,
“能力”=>$能力,
],
];
";
$title
";

是否“knownValue”每次都不一样?或者这就是您每次检查数组时查看的字符串?每次都不一样。您可以尝试使用short if语法保存一些代码$variableA=(在_数组(“knownValue”,$array)中)?真:假;谢谢,我想我只是需要睡一觉!设法将代码压缩为