将多个目标值/变量组合在一起

时间:2016-07-11 08:30:47

标签: php

我们目前使用以下PHP代码来定位(更改)多个变量。虽然这有效,但有没有办法缩短它?我猜有一个更短的方法,但我们没有任何PHP知识。

            if($form_id == 10767){
            if($data['element_id'] == 13){
                if(empty($data['value'])){
                    $data['value'] .= '';
                }else{
                    $data['value'] = '<p style="font-size:13px;">'.$data['value'].'</p>';
                }
            }
        }

        if($form_id == 10767){
            if($data['element_id'] == 14){
                if(empty($data['value'])){
                    $data['value'] .= '';
                }else{
                    $data['value'] = '<p style="font-size:13px;">'.$data['value'].'</p>';
                }
            }
        }

        if($form_id == 10767){
            if($data['element_id'] == 16){
                if(empty($data['value'])){
                    $data['value'] .= '';
                }else{
                    $data['value'] = '<p style="font-size:13px;">'.$data['value'].'</p>';
                }
            }
        }

        if($form_id == 10767){
            if($data['element_id'] == 17){
                if(empty($data['value'])){
                    $data['value'] .= '';
                }else{
                    $data['value'] = '<p style="font-size:13px;">'.$data['value'].'</p>';
                }
            }
        }

我认为可以将这些element_id组合成一行,而不是单独定位它们,对吧?

这样的事情:

if($data['element_id'] == 13,14,16,17)

我自己尝试过一些事情,但每次出错或打破事情。

先谢谢你。

2 个答案:

答案 0 :(得分:2)

您目前多次使用相同的if语句,这是不需要的: 然后你应该查看documentation about "if"Logical Operators,你会发现如何写“或”:

if($form_id == 10767){
    if($data['element_id'] == 13 || $data['element_id'] == 14 || ...etc... ){
        if(!empty($data['value'])){
            $data['value'] = '<p style="font-size:13px;">'.$data['value'].'</p>';
        }
    }
}

我还删除了空$data['value'] .= '';,因为它没有做任何事情。 (注意!之前的empty(),这意味着它会验证值 是否为空。)

答案 1 :(得分:2)

如果您将目标加载到数组中,然后我们in_array(needle, haystack),则可以轻松将其缩小。

使用三元运算符代替IF,可以进一步减少。

$target_ids = array(13,14,16,17);
if($form_id == 10767){
    if( in_array($data['element_id'], $target_ids)) {
        $data['value'] = empty($data['value']) ? '' : '<p style="font-size:13px;">'.$data['value'].'</p>';

    }
}