代码之家  ›  专栏  ›  技术社区  ›  rob - not a robber

基于条件从其他变量装配变量

  •  0
  • rob - not a robber  · 技术社区  · 15 年前

    所以,我在一个表中有几个列,它们基本上指定了某条信息是否由用户提供。

    | ID | USER | crit1 | crit2 | crit3 | crit4 | etc. |
    

    现在,记录中的任何“critX”字段都可以是1或是。我不太懂数学和排列,但我想如果有4列,你可以有16个输出组合。在我的真实世界例子中,我有16个不同的标准,所以我不能考虑混乱的结果。我需要写一个例行公事。

    ### first I pull the values
    $mydbarray[crit1] = $cr1;
    $mydbarray[crit2] = $cr2;
    $mydbarray[crit3] = $cr3;
    (etc...)
    
    ### then I assign some human friendly text ONLY if the value == 1/yes
    if($cr1==1) ($cr1 = "This info is present!";}
    if($cr2==1) ($cr2 = "Number two is present!";}
    if($cr3==1) ($cr3 = "Three was provided!";}
    

    现在,我需要做的是,仅当“if”在true上触发并汇编为最终变量时,才收集所有输出。

    所以不知怎的,我想:

    $finaloutput = $cr1, $cr2, $cr3;
    

    显然这是无效的,或者我想要的,但是即使它成功了,它最终也会包含所有的==0/no实例。

    所以本质上我需要这些变量的一个条件分组,我没有得到它。

    有人在工作中提到了一个使用布尔的IF语句,但我不太懂。

    我想这很容易,但我和孩子已经睡了一个星期了。所以我的脑子坏了。

    提前谢谢!!! 抢劫

    2 回复  |  直到 15 年前
        1
  •  1
  •   Alin P.    15 年前

    首先,您所写的大部分内容都不是有效的PHP。我假设你写这篇文章只是为了说明这一点,而不是为了语法。

    以下是操作方法:

    你需要一个数组,将你的文本放入其中:

    $texts = array();
    

    对于每个条件,您都要检查它们是否已提供,但要添加到之前创建的数组中:

    if($cr1==1) {$texts[] = "This info is present!";}
    if($cr2==1) {$texts[] = "Number two is present!";}
    if($cr3==1) {$texts[] = "Three was provided!";}
    ...
    

    最后,你将所有的文本与 implode

    $finaloutput = implode(', ', $texts);
    

    我更喜欢这种方法 内爆 如果我想要一个逗号分隔符,我不会在最后得到一个额外的。

    祝你好运,阿林

        2
  •  0
  •   Darren    15 年前

    试试这个:

    $finaloutput = '';
    if($cr1) $finaloutput .= "This info is present! ";
    if($cr2) $finaloutput .= "Number two is present! ";
    if($cr3) $finaloutput .= "Three was provided! ";
    echo $finaloutput;
    

    推荐文章