Re: How to construct an associative and numeric indexable array [message #178285 is a reply to message #178282] |
Sun, 27 May 2012 02:44 |
Leonardo Azpurua
Messages: 46 Registered: December 2010
Karma:
|
Member |
|
|
"Thomas 'PointedEars' Lahn" <PointedEars(at)web(dot)de> escribió en el mensaje
news:1908618(dot)nuHmqJ5PAb(at)PointedEars(dot)de...
> Leonardo Azpurua wrote:
>
>> "Michael Fesser" [wrote]:
>>> .oO(Leonardo Azpurua)
>>>> But when you use the array returned by sqlsrv_fetch_array, you can
>>>> either write $arr["C1"] or $arr[0].
>>>> Do you know how they do that?
>>>
>>> Such an array contains all values twice. There's no direct way to access
>>> an element with an associative key also by a numeric index. For doing
>>> that you would have to loop through the array until you've reached the
>>> element you want.
>>
>> So that's how they do it!
>>
>> I just checked and in fact count($row) yields twice the number of columns
>> in the result set.
>>
>> And it is anything but appealing as a "general" solution.
>
> However, the array can also be created so that the value with the numeric
> key is a reference to the value with the non-numeric key, or vice-versa.
> Thereby the memory footprint of the array may be reduced; at least,
> inconsistencies are avoided:
>
> $ php -v
> PHP 5.3.10-1 (cli) (built: Feb 3 2012 10:03:01)
> Copyright (c) 1997-2012 The PHP Group
> Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
> with XCache v1.3.2, Copyright (c) 2005-2011, by mOo
> with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
> with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
>
> $ phpsh -c
> php> $a = array(); $a['foo'] = 'bar'; $a[0] =& $a['foo']; print_r($a);
> Array
> (
> [foo] => bar
> [0] => bar
> )
>
> php> $a[0] = 'baz'; print_r($a);
> Array
> (
> [foo] => baz
> [0] => baz
> )
A nice solution, thanks!
--
|
|
|