[Year 12 SofDev] Records and Arrays

Steven Bird sb at csse.unimelb.edu.au
Wed Aug 18 20:57:39 EST 2010


The following might help you to distinguish these concepts.

Consider any kind of real world entity, e.g. a student, a school, a book, a
patient, etc.  Now think about its attributes.  For a book this might be
title, author, year, isbn, price...  When we model such an entity using a
computer, we specify a set of attributes.  This is a "record".  It is just a
collection of attributes describing an entity.

A record could be stored on disk (e.g. as a row of a relational database
table, or as a row of a CSV file), or represented in volatile memory in a
data structure in a running program.  Perhaps the most common data type used
for representing a record is an "associative array" ("hash" in Perl;
"dictionary" in Python; "array" (!) in PHP, "map" in C++); some languages
support a "tuple" type which is also appropriate for representing records.
However, at one level these details don't matter.  What's important is just
that we have a set of attributes.

Now consider any collection of entities of the same type, e.g. students,
schools, books, patients, etc.  When we model these in a computer, we
specify a collection of like entities.  This is just a set or list of
entities.

This list could be stored on disk (e.g. as a relational table, or a CSV
file), or represented in a running program.  The most common data type is an
"array", and that's what it is called in most languages (but it is "list" in
Python).  Some languages encourage you to define array elements to be all of
the same type, but not all.  In general, I think this is a good practice.

PHP blurs the distinction between records and arrays.  However, a programmer
can use PHP in such a way to keep them quite distinct:

my_record1 = array('isbn'=>1441412050, 'title'=>'Alice in Wonderland',
'author'=>'Lewis Carroll');
my_record2 = array('isbn'=>1441412050, 'title'=>'Through the Looking
Glass', 'author'=>'Lewis Carroll');

my_array = array(my_record1, my_record2);


my_record1['isbn'];   /* access a record's attribute by name */
my_array[1];          /* access an array's element by index */

I hope this helps!

--
Steven Bird
http://stevenbird.me/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.edulists.com.au/pipermail/sofdev/attachments/20100818/513a1637/attachment.html 


More information about the sofdev mailing list