#19943 [Com]: Ragged array returns undefined results

2002-10-30 Thread Ppslim
 ID:   19943
 Comment by:   [EMAIL PROTECTED]
 Reported By:  [EMAIL PROTECTED]
 Status:   Critical
 Bug Type: Arrays related
 Operating System: Win2K
 PHP Version:  4.3.0-dev
 New Comment:

I think this is pretty much invalid.

[EMAIL PROTECTED] posted 2 examples. Only 1 is correct, or infact, valid
code.

In the first example, you have the following 2 array assignments.

$ragged[$count]= 'single '.$count;
$ragged[$count]['idx'] = 'ragged '.$count;

In this, you assign a string to $ragged[$count], then, you turn it into
an array using $regged[$count]['idx'].

This is invlaid in most languages.

In the $ragged[$count], $ragged['idx'][$count] method, no type changes
are taking place.


Previous Comments:


[2002-10-16 22:51:14] [EMAIL PROTECTED]

A pretty interesting bug this is, there appear to be 2 possible
behaviours that can happen here and only 1 is correct.
?php

$ar = array();
for ( $count = 0; $count  10; $count++ )
{
$ar[$count]= $count;
$ar[$count]['idx'] = $count;
}

for ( $count = 0; $count  10; $count++ )
{
echo $ar[$count]. -- .$ar[$count]['idx'].\n;
}
?

The code above will output:
t 0 -- t
t 1 -- t
t 2 -- t
t 3 -- t
t 4 -- t
t 5 -- t
t 6 -- t
t 7 -- t
t 8 -- t
t 9 -- t
/home/rei/PHP_CVS/php4/Zend/zend_operators.c(1008) :  Freeing
0x08369384 (6 bytes), script=a.php
Last leak repeated 9 times

If the  around the $count variable are removed then the script
reports:
Warning: Cannot use a scalar value as an array in
/home/rei/PHP_CVS/php4/a.php on line 7
/home/rei/PHP_CVS/php4/a.php(7) : Warning - Cannot use a scalar value
as an array

for every assignment and does no initialize any of the
$ar[$count]['idx'] values.



[2002-10-16 19:54:16] [EMAIL PROTECTED]

However, the following codes does work, even though the array is still
ragged:
?
$ragged = array();
for ( $count = 0; $count  10; $count++ )
{
$ragged['idx'][$count] = 'ragged '.$count;
$ragged[$count]= 'single '.$count;
}
?
htmlhead/headbody
table border=1
tr
tdExpected/tdtdActual/td
tdExpected IDX/tdtdActual IDX/td
/tr
?
for ( $count = 0; $count  10; $count++ )
{
?
tr
td ?= 'single '.$count ? /tdtd ?= $ragged[$count] ? /td
td ?= 'ragged '.$count ? /tdtd ?= $ragged['idx'][$count] ?
/td
/tr
? } ?
/table/body/html



[2002-10-16 19:50:57] [EMAIL PROTECTED]

When using an array that has ragged indices, the value in the array is
undefined. Well, actually it can be defined, but it is unexpected. No
errors or warnings are reported. Sample Code:

?
$ragged = array();
for ( $count = 0; $count  10; $count++ )
{
$ragged[$count]= 'single '.$count;
$ragged[$count]['idx'] = 'ragged '.$count;
}
?
htmlhead/headbody
table border=1
tr
tdExpected/tdtdActual/td
tdExpected IDX/tdtdActual IDX/td
/tr
?
for ( $count = 0; $count  10; $count++ )
{
?
tr
td ?= 'single '.$count ? /tdtd ?= $ragged[$count] ? /td
td ?= 'ragged '.$count ? /tdtd ?= $ragged[$count]['idx'] ?
/td
/tr
? } ?
/table/body/html





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




#19943 [Com]: Ragged array returns undefined results

2002-10-16 Thread su-php

 ID:   19943
 Comment by:   [EMAIL PROTECTED]
 Reported By:  [EMAIL PROTECTED]
 Status:   Open
 Bug Type: Arrays related
 Operating System: Win2K
 PHP Version:  4.2.1
 New Comment:

However, the following codes does work, even though the array is still
ragged:
?
$ragged = array();
for ( $count = 0; $count  10; $count++ )
{
$ragged['idx'][$count] = 'ragged '.$count;
$ragged[$count]= 'single '.$count;
}
?
htmlhead/headbody
table border=1
tr
tdExpected/tdtdActual/td
tdExpected IDX/tdtdActual IDX/td
/tr
?
for ( $count = 0; $count  10; $count++ )
{
?
tr
td ?= 'single '.$count ? /tdtd ?= $ragged[$count] ? /td
td ?= 'ragged '.$count ? /tdtd ?= $ragged['idx'][$count] ?
/td
/tr
? } ?
/table/body/html


Previous Comments:


[2002-10-16 19:50:57] [EMAIL PROTECTED]

When using an array that has ragged indices, the value in the array is
undefined. Well, actually it can be defined, but it is unexpected. No
errors or warnings are reported. Sample Code:

?
$ragged = array();
for ( $count = 0; $count  10; $count++ )
{
$ragged[$count]= 'single '.$count;
$ragged[$count]['idx'] = 'ragged '.$count;
}
?
htmlhead/headbody
table border=1
tr
tdExpected/tdtdActual/td
tdExpected IDX/tdtdActual IDX/td
/tr
?
for ( $count = 0; $count  10; $count++ )
{
?
tr
td ?= 'single '.$count ? /tdtd ?= $ragged[$count] ? /td
td ?= 'ragged '.$count ? /tdtd ?= $ragged[$count]['idx'] ?
/td
/tr
? } ?
/table/body/html





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