我为什么这么简单的事情没有工作感到困惑,所以我必须遗漏一些明显的东西。
这是我的代码:
$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; ?我在这里错过了分号吗?
答案 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可以帮助你,至少尝试一下。