Bug in array_key_exist?

From: Date: Tue, 26 Aug 2008 22:38:54 +0000
Subject: Bug in array_key_exist?
Groups: php.general 
Request: Send a blank email to php-general+get-278746@lists.php.net to get a copy of this message
Hi, I have a problem with array_key_exists in if statement. I have a class with this function class XXX { private items = array(); ... ... ... public function addXXX($id, $count)
    {
       $count = (int)$cout;
        if (!array_key_exists($id, $this->items))
           $this->items[$id] = $count;
        else
           $this->items[$id] += $count;
    }
... ... } And I want to send instance of this class with SESSION. If I add a item to the array, count is ok, but if i go to the next page count will change. There is the code of index.php /** its loading classes ***/ spl_autoload_register('loadClass'); session_start(); var_dump($_SESSION['XX']); /** A **/ .... ... ... ... if ($_SESSION['XX'] instanceof XXX) $x = $_SESSION['XX']; else new... .. .. /** Do onzl this **/ if .... $x->addXXX($id, $cnt); .... ... ... $_SESSION['XX'] = X; var_dump($_SESSION['XX']); /** B **/ There is a vardump if action addXXX exec: A: object(Kosik)#1 (1) { ["zbozi:private"]=> array(0) { } } B: object(Kosik)#1 (1) { ["zbozi:private"]=> array(1) { [1]=> int(1) } } And than i will go to some page and vardums are: A: object(Kosik)#1 (1) { ["zbozi:private"]=> array(1) { [1]=> int(4) } } 1 : 4 B: object(Kosik)#1 (1) { ["zbozi:private"]=> array(1) { [1]=> int(4) } } I am thinking that do both codes in if statement, but $this->items[$id] += $count; exec after send page. I am using PHP Version 5.2.6 and Smarty v.2.6.19 Thanks for help :)

« previous php.general (#278746) next »