tags:

views:

31

answers:

2

Hi Gang,

Brain totally not working today.

So, I have a few columns in a table that basically designate whether a certain piece of information WAS or WAS NOT provided by the user.

For example, I have a table with:

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

Now, the record could have a 1 or yes for any of the "critX" fields. I dunno much about math and permutations, but I guess if there were 4 columns, you could have 16 combinations of output. In my real world example I have 16 different criteria, so I can't factor for the output of that mess. I need to write a routine of some sort.

In my example, each of those crit values is going to be evaluated and if the criterion == 1/yes, it will be included in another variable AND have a more human friendly bit of data assigned to it. I am currently pulling each value from the DB an doing something like

### 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!";}

Now, what I need to do, is collect all that output only if the "IF" fired on true and assemble into a final variable.

So somehow, I want:

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

Obviously that's not valid or what I want, but even if it DID work, it would end up including all the == 0/no instances as well.

So essentially I need a conditional grouping of these variables and I am not getting it.

I was thinking of casting an array and looping through it, but then I was at a loss for including the human intelligible portions...

Some guy at work mentioned an IF statement using bool, but I am not wellversed there.

I would think this is easy, but I've been up all week with the baby. so my brain is broken.

Thanks in advance!!! Rob

A: 

Try this:

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

You dont need brackets in an if statement if there is only one item inside it. Im not sure if you want commas in the variable though...

Darren
Thanks for the tip on the curly brackets! I think you got the overall flavor of my problem but Alin's solution nailed it.
rob - not a robber
+1  A: 

Hi Rob,

First of all much of what you wrote is not valid PHP. I will assume you wrote it just to illustrate the point and didn't bother with the syntax.

Here is how to do it:

You take an array in which you will put your texts:

$texts = array();

For each of your criteria you check if they are provided, but add to the array created before:

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

In the end you concatenate all your texts with implode:

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

I prefer the method with implode to the one that just appends to a string because if I want a comma separator I don't get an extra one at the end.

Good luck, Alin

Alin Purcaru
Thanks Alin... yeah, I was trying to make a point with the pesudo code. Not an overly difficult problem to solve, I'm just new and my mind is totally not working this morning. Your solution is perfect.
rob - not a robber