比较字符串是否等于php中的变量


Compare if String equals a variable in php

我很困惑为什么这么简单的东西不起作用,所以我一定错过了一些明显的东西。

下面是我的代码:
    $store_category = '<%= terms %>';
    $store_url_suffix = '';
    if ($store_category == 'A1' ) {
      $store_url_suffix = 'coupon';
    } else {
      $store_url_suffix = '100-special-coupon';
    }
要注意的是,如果我回显$store_category,它会显示例如'A1''A2''A3'等。问题是if语句的条件表达式从来没有计算出true,所以它从来没有将'coupon'分配给$store_url_suffix,而是总是转到else块,在那里它将'100-special-coupon'分配给$store_url_suffix

是否有一个原因,为什么在这行if ($store_category == 'A1' ) {条件不评估true,即使回显$store_category显示事实上它有值'A1'?我是不是少了一个分号?

    $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)

我可能错过了一些东西,但'<%= terms %>'只是一个字符串,而不是一个变量,获得类别名称在PHP方面。它只是一个字符串'<%= terms %>' == 'A1'永远不会成真。

原因

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

返回'A1'必须是你的框架模板预处理器或类似的东西。这就是echo和var_dump结果差异很大的原因。

必须有一种方法在框架中获得存储类别的真实值,以便在if条件中使用它。

我想这本手册可以帮助你,至少试一下。