почему этот код добавляет две точки каждый раз, когда выполняется

почему этот код каждый раз, когда он выполняет, добавляет две точки к числу в a.txt :

<?php function substr_unicode($str, $s, $l = null) { return join("", array_slice( preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY) , $s, $l) ); } function statusRead() { $statusfile = file_get_contents('a.txt'); // for detecting and removing BOM (0xEF,0xBB,0xBF) $statusfile = ord($statusfile[0]) == 239 ? ord($statusfile[1]) == 187 ? ord($statusfile[2]) == 191 ? substr_unicode($statusfile, 1) : $statusfile : $statusfile : $statusfile; $statusfile = str_replace("\r",'',$statusfile); $statusfile = explode("\n",$statusfile); foreach ($statusfile as $a) { $a = explode(":",$a); if($a[0]) $temp[$a[0]] = @$a[1] ? $a[1] : null; } return $temp; // changed: (($statusfile = $temp; return $statusfile;)) to ((return $temp;)) } function statusUpdate($data) { $temp = ''; foreach ($data as $a => $b) { $temp .= "$a:$b\r\n"; } file_put_contents('a.txt', $temp); } $a = statusRead(); $a['number']++; statusUpdate($a) ; ?> 

это содержание a.txt :

 stop:0 number:5 dor:3 

a['number']++ каждый раз добавляет две точки к числу в a.txt, а при использовании a['number'] += 2 добавляет 4 точки к числу в a.txt

update: Я изменил $temp .= "$a:$b\r\n"; to $temp .= "$a :$b\r\n"; и мои данные сохранены в этой структуре:

 stop :0 number :6 dor :3 number :1 

но почему?