PHP多个IF语句(带回声),更简单的方法?

时间:2013-04-02 20:51:31

标签: php

好的,所以我的所有代码都正常工作,我只是想知道是否有更简单的方法。代码:

if($_POST['A'] == ""){echo "A";}
if($_POST['B'] == ""){echo "B";}
if($_POST['C'] == ""){echo "C";}
if($_POST['A'] == "" && $_Post['B'] == ""){echo "A and B";}
if($_POST['A'] == "" && $_Post['C'] == ""){echo "A and C";}
if($_POST['B'] == "" && $_Post['C'] == ""){echo "B and C";}

现在,我想知道的是相当简单的,有没有办法让这更简单?它适用于三个变量,但如果我(例如)圈出整个字母表,如果我的统计数据的记忆是正确的,那就是26!等于4.0329146e + 26。地狱,甚至盘旋前7个字母,7!是我需要编码的5040种可能的组合。

我正在寻找的东西不一定要回应“A和B”,但是如果A是唯一发布到回声A的东西;如果A和B被发布到回显“A”和“B”并回应它们之间的“和”;如果A,B和C被发布到回显“A”,“B”和“C”并且在前两个之间回显“,”并且在第二个到最后一个和最后一个之间回应“和”。

我不知道我是想要一个函数,一个类,还是其他东西。这可能是最后一个简单的问题,如果是这样,请原谅我的无知。

3 个答案:

答案 0 :(得分:2)

对于像“A和B”这样的简单消息,以下内容可以完成这项工作:

$variables = range('A', 'Z');
echo implode(' and ', $variables);

如果您有$ _POST,则可以执行以下操作:

if($_POST){
    echo implode(' and ', array_keys($_POST));
}

答案 1 :(得分:1)

function format_list( $items )
{
    if ( count( $items ) == 0 )
        return '';
    if ( count( $items ) == 1 )
        return $items[0];

    $last_item = array_pop( $items );
    $list_text = join( ', ', $items ) . ' and ' . $last_item;

    return $list_text;
}

$items = array();
$keys = array( 'A', 'B', 'C' );
foreach ( $keys as $key )
{
    if ( !empty( $_POST[$key] ) )
        $items[] = $key;
}
echo format_list( $items );

答案 2 :(得分:0)

$count = count($_POST);
$a = 1;
$str = '';
foreach ( $_POST as $key => $value )
{
     // if u wanna use values just replace $key to $value
     if ( $count > $a++ )
         $str .= $key . ', ';
     else
     {
         $str = rtrim( $str, ', ' );
         $str .= ' and ' . $key;
         $str = ltrim( $str, ' and ' );
     }
}