﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking
1854	Uneindeutige if-Clause in Methode get_products() in shopping_cart Klasse	noRiddle	somebody	"In der Methode ''get_products()'' wird am Anfang folgendes abgefragt:

{{{
if($this->contents[$products_id]['qty'] != 0 || $this->contents[$products_id]['qty'] !=''){
}}}
Ich gehe davon aus, daß man hier ""weder 0 noch leer"" meint und es sollte  deshalb vielleicht besser AND anstatt OR lauten:

{{{
if($this->contents[$products_id]['qty'] != 0 && $this->contents[$products_id]['qty'] !=''){
}}}
Wenn z.B. 0 als String, also '0' der Wert für qty wäre ergäbe die if-Clause ''true'', nur weil es ein INT ist ergibt sie ''false''.

Test:

{{{
$v = 0;
var_dump($v != 0 || $v != ''); //false (imho überraschend weil nicht intuitiv)
}}}
während

{{{
$v = '0';
var_dump($v != 0 || $v != ''); //true
}}}
Imho ist eigentlich beides nicht gut weil kein (int)0 und kein !'', also leerer String, nicht auf der selben Ebene spielt.
Entweder  man stellt vorher sicher, daß qty immer ein INT ist oder immer ein  String und fragt entsprechend logisch ab oder man sollte ''empty()'' benutzen.

{{{
if(!empty($this->contents[$products_id]['qty'])){
}}}
Gruß,
noRiddle"	Frage	closed	normal	modified-shop-2.0.6.0	Shop	2.0.5.1	fixed				
