好的,所以我的所有代码都正常工作,我只是想知道是否有更简单的方法。代码:
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”并且在前两个之间回显“,”并且在第二个到最后一个和最后一个之间回应“和”。
我不知道我是想要一个函数,一个类,还是其他东西。这可能是最后一个简单的问题,如果是这样,请原谅我的无知。
答案 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 ' );
}
}