【问题标题】:get combination results of 5 variables PHP得到 5 个变量 PHP 的组合结果
【发布时间】:2014-06-19 08:37:32
【问题描述】:

我有 5 个不同的输入,用户可以填写或不填写

  • 输入1:
  • 输入2:
  • 输入3:
  • 输入4:
  • 输入5:

总结每个输入都有状态0或1,未填充或已填充。

我需要做的是以简单快捷的方式获得所有 32 种组合。

我试图做的是这样的

i1 = trim($_POST['input1']);
i2 = trim($_POST['input2']);
i3 = trim($_POST['input3']);
i4 = trim($_POST['input4']);
i5 = trim($_POST['input5']);

if(empty(i1) and empty(i2) and empty(i3) and empty(i4) and empty(i5))
{ 
     code = '00000';
     sentence = sentencesql(code); // i have a sql for each combination
} 
elseif (empty(i1) and empty(i2) and empty(i3) and empty(i4) and !empty(i5))
{
     code = '00001';
     sentence = sentencesql(code);
}
.
.
.
// each and every combination
.
.
elseif(!empty(i1) and !empty(i2) and !empty(i3) and !empty(i4) and !empty(i5))
{
     code = '11111';
     sentence = sentencesql(code);
}

这可行,但代码相当广泛

关于如何缩短代码的任何想法???

【问题讨论】:

  • PHP 中的变量用$ 前缀表示。
  • 是的,对不起,我忘记了 $

标签: php


【解决方案1】:

以下代码将完全符合您的要求:

$code = "";
$code .= empty($_POST['input1']) ? 0 : 1;
$code .= empty($_POST['input2']) ? 0 : 1;
$code .= empty($_POST['input3']) ? 0 : 1;
$code .= empty($_POST['input4']) ? 0 : 1;
$code .= empty($_POST['input5']) ? 0 : 1;
$sentence = sentencesql($code);

【讨论】:

  • 对帖子做 trim() 效果很好!!谢谢!
【解决方案2】:

你可以这样做,

for($i=1;$i<=32;$i++)
{
  if(empty(trim($_POST['input'.$i])))
    $code .= '0';
  elseif(!empty(trim($_POST['input'.$i])))
    $code .= '1';
}
 $sentence = sentencesql($code);

【讨论】:

    【解决方案3】:

    不如这样写:

    i1 = trim($_POST['input1']);
    i2 = trim($_POST['input2']);
    i3 = trim($_POST['input3']);
    i4 = trim($_POST['input4']);
    i5 = trim($_POST['input5']);
    
    code = i1 . i2 . i3 . i4 . i5;
    sentence = sentencesql(code);
    

    这会产生你想要的,我想。

    普通变量用$,它看起来像这样:

    $i1 = trim($_POST['input1']);
    $i2 = trim($_POST['input2']);
    $i3 = trim($_POST['input3']);
    $i4 = trim($_POST['input4']);
    $i5 = trim($_POST['input5']);
    
    $code = $i1 . $i2 . $i3 . $i4 . $i5;
    $sentence = sentencesql($code);
    

    【讨论】:

    • trim() 只是删除空格,所以如果输入中有其他数据,$code 将用它们填充
    【解决方案4】:

    你可以试试这个

    i1 = (empty(trim($_POST['input1']))?'0':'1');// si vide i1 = '0' sinon i1= '1' 
    i2 = (empty(trim($_POST['input2']))?'0':'1');
    i3 = (empty(trim($_POST['input3']))?'0':'1');
    i4 = (empty(trim($_POST['input4']))?'0':'1');
    i5 = (empty(trim($_POST['input5']))?'0':'1');
    
    code = i1 . i2 . i3 . i4 . i5;// crer le code en concatenant les resultat
    sentence = sentencesql(code);
    

    【讨论】:

      【解决方案5】:

      你可以试试这样的:

      $code = "";
      for ($i = 1; $i <= 5; $i++) {
        $code += (trim($_POST['input'+$i]) == "") ? "0" : "1";
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2016-04-29
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        相关资源
        最近更新 更多