我很困惑为什么这么简单的东西不起作用,所以我一定错过了一些明显的东西。
下面是我的代码: $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条件中使用它。
我想这本手册可以帮助你,至少试一下。