2011-08-01 10 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