比较运算符问题,当模板变量为零时
Comparison operator problem, when template variable is zero
在 content.php 页面上,我有以下内容:
$html_videos = '';
if (!empty($videos)) {
foreach ($videos as $key => $video) {
$video = PT_GetVideoByID($video, 0, 0, 0);
$html_videos .= PT_LoadPage('videos/list', array(
'SELL_VIDEO' => $video->sell_video,
'RENT_PRICE' => $video->rent_price
));
}
}
在它加载的 list.html 页面上,我有
<?php $affitta = '{{RENT_PRICE}}'; echo $affitta; if (!empty($affitta) && $affitta !== 0) { ?><span class="bold">|</span> {{LANG rent}} <span style='color:#a84849;font-weight:500;'>$ {{RENT_PRICE}}</span><?php } else { echo "FREE"; } ?>
{{LANG 租金}}等于"Rent"
Var $affitta 一直都很好;但是,无论是 0 还是 5,它总是 return 跨度,因此 "Rent $affitta value" 而当 $affitta 等于零时,我希望它是 return "FREE".
我尝试使用 && $affitta !== '0' 和引号,但行为相同。
如果可能有帮助,数据库中的列是整数,默认值为 0。因此,我要做的是如果 RENT_PRICE ($affitta) 为零则显示免费,如果不为零则显示租金,但是无论我尝试什么,我永远无法让它将 $affitta 识别为零,尽管回声显示它是零。
我广泛搜索了答案并尝试了各种其他建议的解决方案,但没有成功。
我希望我已经说清楚了,如果没有,请告诉我并让我澄清一下。我做错了什么?
如果有了最后一行代码(在 list.html
中),您不会一遍又一遍地跳进跳出 PHP,那么您的生活会更轻松。这一行:
<?php $affitta = '{{RENT_PRICE}}'; echo $affitta; if (!empty($affitta) && $affitta !== 0) { ?><span class="bold">|</span> {{LANG rent}} <span style='color:#a84849;font-weight:500;'>$ {{RENT_PRICE}}</span><?php } else { echo "FREE"; } ?>
就是这样:
<?php
$affitta = '{{RENT_PRICE}}';
echo $affitta;
if (!empty($affitta) && $affitta !== 0) {
echo '<span class="bold">|</span> {{LANG rent}} <span style="color:#a84849;font-weight:500;">$ {{RENT_PRICE}}</span>';
} else {
echo "FREE";
}
然后,有了更具可读性的内容,就很容易看出您的问题所在。您将 $affitta
的值定义为 '{{RENT_PRICE}}'
,这显然不等于 0 或任何价格。您的模板系统会将 {{RENT_PRICE}}
替换为实际值,但这里不是数字。您实际上正在评估:if ('{{RENT_PRICE}}' !== 0) {
...
您需要与代码前面 $video->rent_price
中的值进行比较。您如何访问该值完全取决于 PT_LoadPage
函数中发生的事情。
在 content.php 页面上,我有以下内容:
$html_videos = '';
if (!empty($videos)) {
foreach ($videos as $key => $video) {
$video = PT_GetVideoByID($video, 0, 0, 0);
$html_videos .= PT_LoadPage('videos/list', array(
'SELL_VIDEO' => $video->sell_video,
'RENT_PRICE' => $video->rent_price
));
}
}
在它加载的 list.html 页面上,我有
<?php $affitta = '{{RENT_PRICE}}'; echo $affitta; if (!empty($affitta) && $affitta !== 0) { ?><span class="bold">|</span> {{LANG rent}} <span style='color:#a84849;font-weight:500;'>$ {{RENT_PRICE}}</span><?php } else { echo "FREE"; } ?>
{{LANG 租金}}等于"Rent"
Var $affitta 一直都很好;但是,无论是 0 还是 5,它总是 return 跨度,因此 "Rent $affitta value" 而当 $affitta 等于零时,我希望它是 return "FREE".
我尝试使用 && $affitta !== '0' 和引号,但行为相同。 如果可能有帮助,数据库中的列是整数,默认值为 0。因此,我要做的是如果 RENT_PRICE ($affitta) 为零则显示免费,如果不为零则显示租金,但是无论我尝试什么,我永远无法让它将 $affitta 识别为零,尽管回声显示它是零。
我广泛搜索了答案并尝试了各种其他建议的解决方案,但没有成功。
我希望我已经说清楚了,如果没有,请告诉我并让我澄清一下。我做错了什么?
如果有了最后一行代码(在 list.html
中),您不会一遍又一遍地跳进跳出 PHP,那么您的生活会更轻松。这一行:
<?php $affitta = '{{RENT_PRICE}}'; echo $affitta; if (!empty($affitta) && $affitta !== 0) { ?><span class="bold">|</span> {{LANG rent}} <span style='color:#a84849;font-weight:500;'>$ {{RENT_PRICE}}</span><?php } else { echo "FREE"; } ?>
就是这样:
<?php
$affitta = '{{RENT_PRICE}}';
echo $affitta;
if (!empty($affitta) && $affitta !== 0) {
echo '<span class="bold">|</span> {{LANG rent}} <span style="color:#a84849;font-weight:500;">$ {{RENT_PRICE}}</span>';
} else {
echo "FREE";
}
然后,有了更具可读性的内容,就很容易看出您的问题所在。您将 $affitta
的值定义为 '{{RENT_PRICE}}'
,这显然不等于 0 或任何价格。您的模板系统会将 {{RENT_PRICE}}
替换为实际值,但这里不是数字。您实际上正在评估:if ('{{RENT_PRICE}}' !== 0) {
...
您需要与代码前面 $video->rent_price
中的值进行比较。您如何访问该值完全取决于 PT_LoadPage
函数中发生的事情。