Re: associative arrays
| From: | JEFFRY KILLEN | Date: | Tue, 02 Nov 2021 23:17:43 +0000 |
| Subject: | Re: associative arrays | ||
| References: | 1 2 3 4 5 6 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327815@lists.php.net to get a copy of this message | ||
> On Nov 2, 2021, at 3:57 PM, Ashley Sheridan <ash@ashleysheridan.co.uk> wrote:
>
>
> On 02/11/2021 21:21, JEFFRY KILLEN wrote:
>>
>>> On Nov 2, 2021, at 1:03 PM, Tedd Sperling <tedd.sperling@gmail.com> wrote:
>>>
>>>
>>>
>>>> On Nov 2, 2021, at 2:25 PM, Christoph M. Becker <cmbecker69@gmx.de> wrote:
>>>>
>>>> On 02.11.2021 at 07:24, JEFFRY KILLEN wrote:
>>>>> Hello:
>>>>>
>>>>> I have been programming php and javascript for some time.
>>>>> I have not come on a way to navigate upward in javascript
>>>>> objects (it does not have associative arrays but objects are
>>>>> often used in the same way associative arrays are used)
>>>>>
>>>>> To create a metaphor: it is like a squirrel jumps from another tree and lands
>>>>> on a branch. It
>>>>> can find its way to the trunk and to the ground.
>>>> The squirrel doesn't ask the branch how to get to the trunk or to the
>>>> ground, though. Instead, it remembers its way so far. :)
>>>>
>>>> --
>>>> Christoph M. Becker
>>> Not quite, a better analogy would be the squirrel doesn’t know on what branch his
>>> father found his mother.
>>>
>>> More specifically, an array inside another array doesn’t know it’s inside another
>>> array. In fact, it’s simply a memory address that can only be located via an index inside another
>>> array, which is yet another memory address. Ask any memory address where it is and it can answer
>>> you, but it can’t offer much more information other than what it is — after all, it’s just a
>>> memory address.
>>>
>>> If you want data to tell you what data proceeded it, then look into a double
>>> linked-list. That might solve your problem.
>>>
>>> Cheers,
>>>
>>> Tedd
>>>
>>> Tedd Sperling
>>> tedd.sperling@gmail.com
>> Yes, the squirrel analogy is a weak analogy. But like a file system, the array is a tree
>> structure, as I
>> understand it. Code or user can navigate around the file system paths using '..',
>> which refers to the
>> parent directory of the current directory.
>>
>> But where memory is concerned, in order to get to a particular branch, or object/array
>> property
>> the path has to already be known. Or recursive processing can hunt for a property and save
>> what it finds for future reference. But that is the rub. It will have to save the property
>> chain as
>> a string. Then future reference has to use eval on the string to get the value or
>> properties stored
>> there. At least that is true for javascript and working with both, I am concerned with
>> being able
>> to translate from one to another. I presume that php works in a similar way: IE nested
>> properties
>> can be found with recusive search. But the chain of properties would have to saved as a
>> string
>> for future reference. And eval would have to be used to get to the value(s) and/or sibling
>> properties.
>> represented by the string.
>>
>> Or is there another way?
>>
>> I appreciate this exchange. Thank you
>> JK
>
> You have your understanding of arrays wrong. An array is nothing like a tree structure, no
> matter how you think of them. A file tree would use a doubly linked list, as Tedd pointed out. These
> are effectively lists of objects, each one references it's parents, children, or siblings,
> within the list.
>
> Arrays are dumb lists, each element contains no reference to what went before, or after, and
> has no understanding or concept of a "parent". They're so dumb that internally PHP
> uses an internal pointer when traversing an array, and you can use functions like current(), next(),
> and reset(), to manage that pointer.
>
> If you need that kind of capability, then you need objects, not arrays.
>
> --
> Ashley Sheridan
> https://www.ashleysheridan.co.uk
Thank you for your guidance and suggestions;
JK