2008/11/4 Hannes Magnusson <[EMAIL PROTECTED]>:
> On Mon, Nov 3, 2008 at 09:44, Lars Torben Wilson <[EMAIL PROTECTED]> wrote:
>> 2008/11/2  <[EMAIL PROTECTED]>:
>>>  ID:          46251
>>>  Updated by:  [EMAIL PROTECTED]
>>>  Reported By: php at pengi dot se
>>> -Status:      Open
>>> +Status:      Wont fix
>>>  Bug Type:    Documentation problem
>>>  PHP Version: Irrelevant
>>>
>>>
>>> Previous Comments:
>>> ------------------------------------------------------------------------
>>>
>>> [2008-10-08 10:55:36] php at pengi dot se
>>>
>>> This also applies to the next section of the example.
>>>
>>> $b = array();
>>>
>>> ------------------------------------------------------------------------
>>>
>>> [2008-10-07 23:45:51] php at pengi dot se
>>>
>>> Description:
>>> ------------
>>> First example under section Examples in documentation for Array type
>>> says, that creating an array with array(initial value) is the same as
>>> writing:
>>>
>>> $a[key] = value;
>>> $a[key] = value;
>>> $a[key] = value;
>>>
>>> but missing initialization of the variable.
>>>
>>> This may also be a security issue for people using this way of
>>> initialization and also are using register_globals.
>>>
>>> What should be added to the example is:
>>> $a = array();
>>>
>>> URL to related documentation page:
>>> http://php.net/manual/en/language.types.array.php
>>>
>>> Reproduce code:
>>> ---------------
>>> // this
>>> $a = array( 'color' => 'red',
>>>            'taste' => 'sweet',
>>>            'shape' => 'round',
>>>            'name'  => 'apple',
>>>                       4        // key will be 0
>>>          );
>>>
>>> // is completely equivalent with
>>> $a['color'] = 'red';
>>> $a['taste'] = 'sweet';
>>> $a['shape'] = 'round';
>>> $a['name']  = 'apple';
>>> $a[]        = 4;        // key will be 0
>>
>> I disagree with the decision to mark this "Won't Be Fixed"; the
>> documentation is incorrect and the fix is simple.
>>
>>
>> Index: en/language/types/array.xml
>> ===================================================================
>> RCS file: /repository/phpdoc/en/language/types/array.xml,v
>> retrieving revision 1.4
>> diff -u -u -r1.4 array.xml
>> --- en/language/types/array.xml 21 Feb 2008 18:43:17 -0000      1.4
>> +++ en/language/types/array.xml 3 Nov 2008 08:41:33 -0000
>> @@ -597,26 +597,33 @@
>>    <programlisting role="php">
>>  <![CDATA[
>>  <?php
>> -// this
>> +// This:
>>  $a = array( 'color' => 'red',
>>             'taste' => 'sweet',
>>             'shape' => 'round',
>>             'name'  => 'apple',
>> -                       4        // key will be 0
>> +            4        // key will be 0
>>           );
>>
>> -// is completely equivalent with
>> +$b = array('a', 'b', 'c');
>> +
>> +// . . .is completely equivalent with this:
>> +$a = array();
>>  $a['color'] = 'red';
>>  $a['taste'] = 'sweet';
>>  $a['shape'] = 'round';
>>  $a['name']  = 'apple';
>>  $a[]        = 4;        // key will be 0
>>
>> +$b = array();
>>  $b[] = 'a';
>>  $b[] = 'b';
>>  $b[] = 'c';
>> -// will result in the array array(0 => 'a' , 1 => 'b' , 2 => 'c'),
>> -// or simply array('a', 'b', 'c')
>> +
>> +// After the above code is executed, $a will be the array
>> +// array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round',
>> +// 'name' => 'apple', 0 => 4), and $b will be the array
>> +// array(0 => 'a', 1 => 'b', 2 => 'c'), or simply array('a', 'b', 'c').
>>  ?>
>>  ]]>
>>    </programlisting>
>
>
> I think the "Wont fix" was due to the fact you can do $foo[] =
> "value"; without initializing $foo = array() without getting any
> notices or difference then initializing it beforehand.
>
> Although we shouldn't be advocating such coding we still should
> document it - adding (like the bug reporter correctly pointed out)
> register_global issues note..
>
> -Hannes

I agree--and I know my tone to Dan was a bit brusque (sorry about
that). I just feel that we can't call the two examples "completely
equivalent" when one starts with a fresh array and the other only
starts with a fresh array if the array hasn't been defined yet (I
guess you know that though).

I haven't committed my changes since I don't want to just go charging
around changing things when Dan seemed like he had a reason not to
change it--which he well may. I'll commit when I get home in a few
hours if I hear nothing before then.


Torben

Reply via email to