我正在编写代码,此时代码如下:
$reduced = is_reduced($pid);
set_sale($pid, $reduced);
echo " - " . $reduced . " - ";
所以,背后的逻辑应该是这样的:
如果产品减少,我会调用函数is_reduced()
来了解。通常,它应该返回true或false。但我没有得到任何回报。你可以看到,我正在将带有echo的变量打印到控制台。但我没有看到任何东西。甚至不是NULL!
但是在控制台上,我可以看到它被“打开”并没有被打印出来。所以,它也应该返回一些。因为echo
后跟函数is_reduced
中的return命令(下面的代码)。
该功能的一些信息:
一页可以有多个价格。这就是为什么我有while循环的原因。如果只有一个价格,我会-1
返回var aktueller_counter
。所以,我跳进了第一个部落。在那里检查是否有更低的价格,如果是,如果这个价格不是0,不是“”而不是低于-1。
正如您所看到的,它显示echo
后跟return
。但为什么我没有得到任何NULL或任何布尔值?
我会很乐意帮忙! 亲切的问候!
这里是代码:
function is_reduced($pid){
$aktueller_counter = -1;
while(have_rows('product_shops', $pid)): the_row();
$aktueller_counter = $aktueller_counter + 1;
endwhile;
if($aktueller_counter == -1){
$price = get_field("product_shops_0_price", $pid);
$price_old = get_field("product_shops_0_price_old", $pid);
if($price_old < $price) {
if ($price_old != "") {
if ($price_old != 0) {
if ($price_old > -1) {
$price = null;
$price_old = null;
$aktueller_counter = null;
echo ", is \"reduced\"";
return true;
} else {
$price = null;
$price_old = null;
$aktueller_counter = null;
echo ", is NOT \"reduced\"";
return false;
}
} else {
$price = null;
$price_old = null;
$aktueller_counter = null;
echo ", is NOT \"reduced\"";
return false;
}
} else {
$price = null;
$price_old = null;
$aktueller_counter = null;
echo ", is NOT \"reduced\"";
return false;
}
} else {
$price = null;
$price_old = null;
$aktueller_counter = null;
echo ", is NOT \"reduced\"";
return false;
}
}else{
for($i = 0; $i <= $aktueller_counter; $i++){
$price = get_field("product_shops_".$i."_price", $pid);
$price_old = get_field("product_shops_".$i."_price_old", $pid);
if($price_old < $price){
if($price_old != ""){
if($price_old != 0){
if($price_old > -1) {
$price = null;
$price_old = null;
$aktueller_counter = null;
echo ", is \"reduced\"";
return true;
}
}else {
$price_old = null;
$price = null;
}
}else {
$price_old = null;
$price = null;
}
}else {
$price_old = null;
$price = null;
}
}
$price = null;
$price_old = null;
$aktueller_counter = null;
echo ", is NOT \"reduced\"";
return false;
}
}
答案 0 :(得分:1)
当向屏幕显示布尔值时,您可以更轻松地使用var_export()
而不是echo
。您的代码完全可能在false
返回(或至少其中一些)时正常工作。
考虑这些事件:(Demo)
var_export(false);
echo "\n----\n";
echo false;
echo "\n----\n";
var_export(true);
echo "\n----\n";
echo true;
echo "\n----\n";
var_export(null);
echo "\n----\n";
echo null;
echo "\n----\n";
输出:
false
----
----
true
----
1
----
NULL
----
----
the_row();
有什么用途?
您可以将$aktueller_counter = $aktueller_counter + 1;
替换为++$aktueller_count;
而不是重复:
$price = null;
$price_old = null;
$aktueller_counter = null;
在条件集之前将这些值声明为默认值是DRYer,并且只在必要时覆盖它们。
由于您未归还$price
,$price_old
或$aktueller_counter
,因此没有理由声明它们。它们仅存在于函数的范围内。 (除非您修改了此帖子的代码,并且实际上是在使用这些变量。)
此外,您的条件陈述相当冗长/众多。经过仔细考虑,您应该能够减少总条件语句并编写更简洁的代码。
答案 1 :(得分:0)
Boolen Value不会得到回声而不是它你可以将它显示为字符串。试试这个:
$reduced = is_reduced($pid);
set_sale($pid, $reduced);
$reduced_str = $reduced ? 'true' : 'false';
echo " - " . $reduced_str . " - ";