2011-08-01 29 views
0

我很難包裝我的頭周圍如何做到這一點...我有一個選擇菜單,我想顯示爲默認和不同的(S)如果某些項目出現在購物車中。試圖寫一個適當的if語句在php

所以說我賣狗和汽車。在購物車中,我選擇了其中一個。如果購物車中有任何汽車,我想要出現一個選擇菜單。但是如果在購物車或貓中存在任何狗,那麼我想要使用不同的選項來顯示不同的選項。所以如果車裏有什麼東西,car_select就會成爲默認值......(我賣了很多東西),但是如果一隻狗出現在購物車中,那麼dog_select會替換它。

它現在寫的方式。默認是最後一件事,那就是顯示。 (見我的意見)

這樣的代碼:

<?php 
foreach($this->rows as $i => $row){ 

if (strstr('dogs',$row->dates)) { 
$mydates = 'dogs'; 
} else {$mydates='default';} 


//echo $row->dates; this spits out the correct values dogcar 


} 
//echo $mydates; with a dog and a car in the cart this returns default 
//below functions i believe but i think the above is faulty 
?> 
<?php 
if ($mydates =='dogs'){ 
//do something here;} else { 

    $type = $this->type; 
    foreach($this->extraFields[$type] as $fieldName => $oneExtraField) { 
    if ($fieldName != 'pickupdate-rosh'){; ?> 
     <tr class="hikashop_checkout_<?php echo $fieldName;?>_line"> 
      <td class="key"> 
       <?php echo $this->fieldsClass->getFieldName($oneExtraField);?> 
      </td> 
      <td> 
       <?php 

         echo $this->fieldsClass->display($oneExtraField,$this->$type->$fieldName,'data['.$type.']['.$fieldName.']'); 
       ?> 
      </td> 
     </tr> 
<?php } ?> 
    <?php } ?> 
<?php } ?> 

我想總是返回car_select除非狗或貓等在車的存在。 {編輯:我只是意識到,這是不正確的函數來尋找一個字符串。}

回答

2

它看起來像你設置$mydates,然後覆蓋它(可能)。這是因爲你將foreach循環的所有迭代中的一個變量設置爲一個結果,而最後一次迭代將成爲最終變量值。

因此,將$mydates設置爲默認值,如果條件正確,則更改它。

$mydates='default'; 
foreach($this->rows as $i => $row){ 
    if (strstr('dogs',$row->dates)) { 
     $mydates = 'dogs'; 
    } 
    //echo $row->dates; this spits out the correct values dogcar 
} 
+0

謝謝,我總是在循環中感到困惑!其他問題:如果我想'狗'實際上代表另一個動物的數組覆蓋..你用另一個foreach做那個嗎? – liz

+0

是的,這些通常是* Doh!*時刻對我來說。至於你的第二個問題,我不確定我是否按照你所要做的那樣去做。 –

+0

以及我在哪裏搜索狗我實際上有5個不同的術語來搜索......我想我可以創建一個數組(狗,貓,鳥),然後搜索它們中的一個if語句,而不是進行多次搜索。我認爲可能是一個更好的方式來寫它? – liz