2010-10-28 51 views
0

腦完全不是今天工作的其他變量的變量。組裝基於一個條件

所以,我有一個表中的幾列,基本上指定某條信息是否是或不是由用戶提供。

例如,我有一個表:

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

現在,記錄可能有1或yes對於任何「critX」字段。我對數學和排列不知道多少,但是我猜如果有4列,你可以有16個輸出組合。在我現實世界的例子中,我有16個不同的標準,所以我不能考慮那個混亂的輸出。我需要寫一些某種程序。

在我的例子中,每個爆擊的那些值的將要被評估,並且如果標準== 1 /是,它會被包括在另一變量,並且具有分配給它的數據的多個人類友好位。目前我正在從數據庫中的做一些牽拉每個值一樣

### 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」開火真實,組裝成最終的變數。

所以不知怎麼的,我想:

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

顯然,這不是有效的還是我想要的東西,但即使沒有工作,它最終將包括所有的== 0 /沒有實例爲好。

所以基本上我需要這些變量的條件分組和我沒有得到它。

我在想鑄造的數組,並通過它循環的,但後來我是在爲包括人類可理解的部分損失...

有些人在工作中使用提到布爾IF語句,但我在那裏沒有好轉。

我認爲這是很容易的,但我已經了所有星期的嬰兒。所以我的大腦壞了。

在此先感謝! 羅布

回答

1

所有很多你寫的首先是不合法的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); 

我喜歡用implode的方法,只是追加到一個字符串,因爲如果我想要一個逗號分隔符我不明白在最後一個額外的一個之一。

祝你好運,阿林

+0

感謝Alin ......是的,我試圖用pesudo代碼說明一點。不是一個過於困難的問題要解決,我只是新的,我的頭腦今天早上完全不工作。你的解決方案是完美的 – 2010-10-28 15:54:35

0

試試這個:

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

你不需要括號中的if語句,如果只有一個裏面的項目。林不知道,如果你想在變量雖然逗號......

+0

感謝對大括號的小費!我認爲你有我的問題的整體味道,但阿林的解決方案釘住了它。 – 2010-10-28 16:01:27