[PHP-BUG] Bug #60067 [NEW]: Strange Recursive/interation

2011-10-15 Thread bigorangemachine at hotmail dot com
From: 
Operating system: Linux CGI/FastCGI
PHP version:  5.3.8
Package:  Variables related
Bug Type: Bug
Bug description:Strange Recursive/interation

Description:

I wrote an OOP PHP class to interact with an Shipping estimate API.  I
setup a logging system to help log  track any issues during testing.

The goal was to have this logging system remove certain index keys for both
'objects' and 'arrays' in a recursive manor.

I believe that the passed-reference (variable using with an ampersand or
what I call a 'live link') is being 'pushed' up.

When I check the logged xml (in the example) it often read 'omitted'.  The
variable was being changed even though the original call to function wasn't
done using a passed-reference.

The function would work correctly with the corrected code or the log_xml
calls completed first.  Maybe using $v is what broke the pass reference and
it was just a 'copy' after that.

Test script:
---
Code Sample Here
http://pastebin.com/GcZMkD6B


-- 
Edit bug report at https://bugs.php.net/bug.php?id=60067edit=1
-- 
Try a snapshot (PHP 5.4):
https://bugs.php.net/fix.php?id=60067r=trysnapshot54
Try a snapshot (PHP 5.3):
https://bugs.php.net/fix.php?id=60067r=trysnapshot53
Try a snapshot (trunk):  
https://bugs.php.net/fix.php?id=60067r=trysnapshottrunk
Fixed in SVN:
https://bugs.php.net/fix.php?id=60067r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=60067r=needdocs
Fixed in release:
https://bugs.php.net/fix.php?id=60067r=alreadyfixed
Need backtrace:  
https://bugs.php.net/fix.php?id=60067r=needtrace
Need Reproduce Script:   
https://bugs.php.net/fix.php?id=60067r=needscript
Try newer version:   
https://bugs.php.net/fix.php?id=60067r=oldversion
Not developer issue: 
https://bugs.php.net/fix.php?id=60067r=support
Expected behavior:   
https://bugs.php.net/fix.php?id=60067r=notwrong
Not enough info: 
https://bugs.php.net/fix.php?id=60067r=notenoughinfo
Submitted twice: 
https://bugs.php.net/fix.php?id=60067r=submittedtwice
register_globals:
https://bugs.php.net/fix.php?id=60067r=globals
PHP 4 support discontinued:  
https://bugs.php.net/fix.php?id=60067r=php4
Daylight Savings:https://bugs.php.net/fix.php?id=60067r=dst
IIS Stability:   
https://bugs.php.net/fix.php?id=60067r=isapi
Install GNU Sed: 
https://bugs.php.net/fix.php?id=60067r=gnused
Floating point limitations:  
https://bugs.php.net/fix.php?id=60067r=float
No Zend Extensions:  
https://bugs.php.net/fix.php?id=60067r=nozend
MySQL Configuration Error:   
https://bugs.php.net/fix.php?id=60067r=mysqlcfg



Bug #60067 [Com]: Strange Recursive/interation

2011-10-15 Thread bigorangemachine at hotmail dot com
Edit report at https://bugs.php.net/bug.php?id=60067edit=1

 ID: 60067
 Comment by: bigorangemachine at hotmail dot com
 Reported by:bigorangemachine at hotmail dot com
 Summary:Strange Recursive/interation
 Status: Open
 Type:   Bug
 Package:Variables related
 Operating System:   Linux CGI/FastCGI
 PHP Version:5.3.8
 Block user comment: N
 Private report: N

 New Comment:

FROM (corrected):
if(@in_array($k,$exclude_keys,true)){
if($_type=='object'){

if(!basic_check($omit_str)){unset($obj-{$k});}
else{$obj-{$k}=$omit_str;}
}else if($_type=='array'){

if(!basic_check($omit_str)){unset($obj[$k]);}
else{$obj[$k]=$omit_str;}
}
}else{
if(gettype($v)=='object'  ($v instanceof 
Traversable)){//

log_clean($obj-{$k},$exclude_keys,$omit_str);}
else if(gettype($v)=='array'){

log_clean($obj[$k],$exclude_keys,$omit_str);}
}

TO (shortened):
if(@in_array($k,$exclude_keys,true)){
if(!basic_check($omit_str)){unset($v);}
else{$v=$omit_str;}
}else{
log_clean($v,$exclude_keys,$omit_str);
}


I changed using $obj[$k] ( and $obj-{$k} [sorry for the syntax error]) to just 
using $v in the function log_clean().  This is my first bug report.  Sorry if I 
don't have the format correct.


Previous Comments:

[2011-10-16 01:15:57] anonymous at anonymous dot anonymous

Needs an SSCCE: http://sscce.org/


[2011-10-15 19:39:27] bigorangemachine at hotmail dot com

Description:

I wrote an OOP PHP class to interact with an Shipping estimate API.  I setup a 
logging system to help log  track any issues during testing.

The goal was to have this logging system remove certain index keys for both 
'objects' and 'arrays' in a recursive manor.

I believe that the passed-reference (variable using with an ampersand or what I 
call a 'live link') is being 'pushed' up.

When I check the logged xml (in the example) it often read 'omitted'.  The 
variable was being changed even though the original call to function wasn't 
done using a passed-reference.

The function would work correctly with the corrected code or the log_xml calls 
completed first.  Maybe using $v is what broke the pass reference and it was 
just a 'copy' after that.

Test script:
---
Code Sample Here
http://pastebin.com/GcZMkD6B







-- 
Edit this bug report at https://bugs.php.net/bug.php?id=60067edit=1