【问题标题】:PHP multiple IF statements (with echo), simplier way?PHP 多个 IF 语句(带回显),更简单的方法?
【发布时间】:2013-04-03 05:41:54
【问题描述】:

好的,所以我的所有代码都在工作,我只是想知道是否有更简单的方法可以做到这一点。代码:

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”并在它们之间回显“and”;如果发布 A、B 和 C 以回显“A”、“B”和“C”,并在前两个之间回显“,”并在倒数第二个和最后一个之间回显一个“and”。

我不知道我是否想要一个函数、一个类或其他东西。这大概是最后运行的一个简单的问题,如果是,请原谅我的无知。

【问题讨论】:

  • 这样的? if($_POST){echo implode(' and ', $_POST);}
  • 一个 foreach() 循环可以工作
  • 保留最后一个逗号:i.imgur.com/fycHx.jpg

标签: php


【解决方案1】:

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

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

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

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

【讨论】:

  • 每个值之间的回显“和”,我更喜欢逗号,然后是“和”。其次,无论用户是否输入数据,每个帖子的回声都是我的问题,因为我包含了一个错字,== 应该是!=。第三,这只是回显变量名,而不是任何更用户友好的术语。第三个问题目前并不真正重要。
  • @WitoldKowelski 您是在使用 POST 变量还是只是一个示例?
【解决方案2】:
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 );

【讨论】:

  • 这确实回显了帖子输入字段的名称,我希望它回显对用户更有意义的东西,但那是以后的事了。不过,在我的代码中,我有一个错字(我应该刚刚复制/粘贴代码而不是重新输入)。但是,如果可以的话,有一个问题是为了纠正我的错字,如何让它与尚未输入的帖子名称相呼应?例如,代码应该是这样的:if($_POST['A'] =! ""){echo "A";} 等?
【解决方案3】:
$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 ' );
     }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2021-12-15
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多