ich einen Code zur Zeit bei Aufruf dieser Code wie folgt writting:PHP gibt nichts (auch nicht NULL)
$reduced = is_reduced($pid);
set_sale($pid, $reduced);
echo " - " . $reduced . " - ";
So ist die Logik dahinter sollte wie: ich die Funktion is_reduced()
anrufen wissen, wenn ein Produkt reduziert wird. Normalerweise sollte es dort wahr oder falsch sein. Aber ich bekomme nichts zurück. Sie sehen, ich drucke die Variable mit echo auf die Konsole. Aber ich sehe nichts. Nicht einmal NULL!
Aber auf der Konsole kann ich sehen, dass es "wird nicht reduziert" wird ausgedruckt. Also sollte es auch etwas zurückgeben. Auf die echo
folgt der Rückgabebefehl in der Funktion is_reduced
(Code unten).
Einige Informationen zur Funktion: Eine Seite kann mehrere Preise haben. Dies ist der Grund, warum ich die While-Schleife habe. Wenn es nur einen Preis gibt, bekomme ich -1
zurück auf die var aktueller_counter
. Also spring ich in den ersten if Stamm. Dort wird geprüft, ob es einen niedrigeren Preis gibt und wenn ja, wenn dieser Preis nicht 0 ist, nicht "" und nicht niedriger als -1.
Und wie Sie sehen können, heißt es echo
gefolgt von return
. Aber warum bekomme ich keinen NULL oder irgendeinen booleschen Wert zurück?
Ich würde mich sehr über Hilfe freuen! Mit freundlichen Grüßen!
Hier den Code:
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;
}
}
Wenn ich mit einem dieser Probleme konfrontiert werde, schreibe einfach ein "echo" hier ";" Zeile und verschiebe es im Code von if zum nächsten, wenn du innerhalb weniger Minuten siehst, wie dein Code funktioniert (und das Problem). – Andreas
'Echos' in Funktion arbeitet richtig? –
Ich habe das schon mit "is not reduced" gemacht. Also, es sollte etwas zurückgegeben werden ... – Erik