Php 根据条件从其他变量中组合变量

Php 根据条件从其他变量中组合变量,php,logic,Php,Logic,大脑今天完全不工作了 因此,我在一个表中有几个列,它们基本上指定了某个信息是否由用户提供 例如,我有一个表,其中包含: | ID | USER | crit1 | crit2 | crit3 | crit4 | etc. | 现在,对于任何“critX”字段,记录都可以有1或是。我对数学和排列不太了解,但我想如果有4列,就可以有16种输出组合。在我的现实世界的例子中,我有16个不同的标准,所以我不能考虑混乱的输出。我需要写一个类似的例程 在我的示例中,将对这些临界值中的每一个进行评估,如果该临

大脑今天完全不工作了

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

例如,我有一个表,其中包含:

| ID | USER | crit1 | crit2 | crit3 | crit4 | etc. |
现在,对于任何“critX”字段,记录都可以有1或是。我对数学和排列不太了解,但我想如果有4列,就可以有16种输出组合。在我的现实世界的例子中,我有16个不同的标准,所以我不能考虑混乱的输出。我需要写一个类似的例程

在我的示例中,将对这些临界值中的每一个进行评估,如果该临界值==1/是,它将包含在另一个变量中,并为其分配更人性化的数据位。我目前正在从DB中提取每个值,并执行如下操作

### 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实例

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

我本想铸造一个数组并在其中循环,但后来我对包含人类可理解的部分感到不知所措

有人在工作中提到了使用bool的IF语句,但我不太熟悉

我想这很容易,但我带着孩子已经起床整整一周了。所以我的脑子坏了

提前感谢!!! Rob

试试这个:

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

如果if语句中只有一项,则不需要括号。我不确定变量中是否需要逗号…

首先,您编写的很多内容都不是有效的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!";}
...
最后,您将所有文本连接到
内爆

$finaloutput = implode(', ', $texts);
我更喜欢使用
内爆
的方法,而不是只在字符串后面附加逗号分隔符的方法,因为如果我想要逗号分隔符,我就不会在末尾附加一个


祝你好运,阿林

谢谢阿林。。。是的,我想用pesudo代码说明一点。这不是一个很难解决的问题,我只是个新手,今天早上我的大脑完全不工作。您的解决方案是完美的。感谢您在花括号上的提示!我想你对我的问题有了全面的了解,但Alin的解决方案解决了。