Re: [PHP] Need routine to tell me number of dimensions in array.

[email protected] (Rene Veerman)
Newsgroups php.general
Message-ID <[email protected]>
maybe you should be foreach()ing with references?
php.net : search "foreach" :


As of PHP 5, you can easily modify array's elements by preceding
$value with &. This will assign reference instead of copying the
value.
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
?>
This is possible only if iterated array can be referenced (i.e. is variable),



On Tue, Mar 16, 2010 at 5:43 PM, Robert Cummings <[email protected]> wrote:
> Peter Lind wrote:
>>
>> Hmm, will probably have to look inside PHP for this ... the foreach
>> loop will copy each element as it loops over it (without actually
>> copying, obviously), however there's no change happening to the
>> element at any point and so there's nothing to suggest to the
>> copy-on-write to create a new instance of the sub-array.
>>
>> It should look like this:
>> $a = array(0, 1, 2, array(0, 1, 2, 3), 4, 5, 6, .... n);
>> $b = $a[3];
>> doStuffs($b);
>>
>> Whether or not you loop over $a and thus move the internal pointer,
>> you don't change (well, shouldn't, anyway) $b as that's a subarray
>> which has it's own internal pointer, that isn't touched.
>>
>> Or maybe I've gotten this completely backwards ...
>
> I'm not sure of the exact reason... PHP has the following comment:
>
>    Note: Unless the array is referenced, foreach operates on a copy
>          of the specified array and not the array itself. foreach
>          has some side effects on the array pointer. Don't rely on
>          the array pointer during or after the foreach without
>          resetting it.
>
>    http://php.net/manual/en/control-structures.foreach.php
>
> I've always found the foreach loop to a be a bit on the bizarre size, this
> is probably just another one of those bizarrities :)
>
> Cheers,
> Rob.
> --
> http://www.interjinn.com
> Application and Templating Framework for PHP
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.