比较String是否等于php

时间:2016-10-28 16:49:50

标签: php wordpress

我为什么这么简单的事情没有工作感到困惑,所以我必须遗漏一些明显的东西。

这是我的代码:

    $store_category = '<%= terms %>';
    $store_url_suffix = '';
    if ($store_category == 'A1' ) {
      $store_url_suffix = 'coupon';
    } else {
      $store_url_suffix = '100-special-coupon';
    }

要注意,如果我回显$store_category,则会显示&#39; A1&#39; &#39; A2&#39; 或应该是&#39; A3&#39; 等。问题是if语句的条件表达式永远不会计算为 true ,因此它永远不会将&#39; coupon&#39; 分配给$store_url_suffix,而是始终转到else块,在那里它将&#39; 100-special-coupon&#39; 分配给$store_url_suffix

有没有理由为什么此行if ($store_category == 'A1' ) {中的条件不评估 true ,即使回显$store_category显示其实际值& #39; A1&#39; ?我在这里错过了分号吗?

2 个答案:

答案 0 :(得分:0)

    $store_category     = '<%= terms %>';  //<== COULD BE A1, A2, A3, A4, ETC... '<%= terms %>';
    $store_url_suffix   = '';
    $couponValues       = [
        'a1'=>'coupon',     
    ];

    if(array_key_exists(strtolower($store_category), $couponValues)){
        $store_url_suffix   = $couponValues[strtolower($store_category)];
    }else{
        $store_url_suffix   = '100-special-coupon';     
    }

    var_dump($store_url_suffix);        //<== string 'coupon' length(6)

答案 1 :(得分:0)

我可能会遗漏一些东西,但'<%= terms %>'只是一个字符串,而不是根据PHP获取类别名称的变量。它只是一个字符串和 '<%= terms %>' == 'A1'永远不会成真。

原因

$store_category = '<%= terms %>';
echo $store_category;

返回&#39; A1&#39;必须是你的框架模板预处理器或类似的东西。这就是为什么echo和var_dump结果差别很大。

必须有一种方法可以在框架中获得商店类别的真正价值,以便在条件中使用它。

我猜this manual可以帮助你,至少尝试一下。