multidimensional arrays cit 336. the basics explaining multidimensional arrays

11
Multidimensional Arrays CIT 336

Upload: jesse-strickland

Post on 01-Jan-2016

215 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

Multidimensional ArraysCIT 336

Page 2: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

The BasicsExplaining Multidimensional Arrays

Page 3: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

ArraysAn array is a serial collection of data. In most programming languages, including PHP, individual array elements are accessed using the following syntax:

variableName[index]Ex: $boolArr[2] = true;

In the example above, the 3rd item in the $boolArr array is being accessed (indexes are 0-based, so the first item is accessed at index: 0, the second item at index: 1, and so on.)

$boolArr• [0]: true• [1]: false• [2]: true• [3]: true

Page 4: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

2D ArraysA ‘normal’ array is one dimensional, meaning it has elements ranging from index:0 to index:n. However, arrays do not necessarily need to be limited to one dimension. We could represent a 2D array by using two indexers like this:

variableName[index1][index2]Ex: $intArr2D[1][2] = 2;

Notice, there are now two indexers, giving our array two dimensionality. The next slide demonstrates this using a table to illustrate.

This concept can be expanded to any number of dimensions, for example, a three dimensional array would be accessed like this:

$doubleArr3D[0][9][6] = 3.4f;

$intArr2D• [0][0]: 0• [0][1]: 0• [0][2]: 0• [1][0]: 0• [1][1]: 1• [1][2]: 2• [2][0]: 0• [2][1]: 2• [2][2]: 4

Page 5: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

2D Array - Rectangular$intArr2D [0][?] [1][?] [2][?]

[?][0] [0][0]: 0 [1][0]: 0 [2][0]: 0

[?][1] [0][1]: 0 [1][1]: 1 [2][1]: 2

[?][2] [0][2]: 0 [1][2]: 2 [2][2]: 4

This is an example of a “rectangular” array – an array of arrays where the nested arrays are all the same size (in this case, each nested array contains 3 elements).

Page 6: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

Jagged ArraysAnother type of multidimensional array is a Jagged Array. A jagged array is also an array of arrays, but in this case, the nested arrays may each be of different lengths. Consider the example to the right – $jagged[0] contains 3 elements, but $jagged[1] only contains 2 elements, while $jagged[2] contains 5 elements.

This variation in nested element length is why the this sort of array is called a Jagged Array.

$jagged[0]• [0]: 'a'• [1]: 'b'• [2]: 'c'

$jagged[1]• [0]: '1'• [1]: '2'

$jagged[2]• [0]: '.'• [1]: ','• [2]: ';'• [3]: '!'• [4]: '?'

Page 7: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

2D Array - Jagged$jagged [0][?] [1][?] [2][?]

[0][0]: 'a' [1][0]: '1' [2][0]: '.'

[0][1]: 'b' [1][1]: '2' [2][1]: ','

[0][2]: 'c' [2][2]: ';'

[2][3]: '!'

[2][4]: '?'

This is an example of a “jagged” array – an array of arrays where the nested arrays can be of varying sizes.

Page 8: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

Creating & Accessing Multidimensional Arrays The process for creating a multidimensional array is very similar to the process for creating a single dimensional array. Essentially, a “normal” array is first created, and then arrays are created and assigned as elements of that array. For example:

$myArray = array();$myArray[0] = array();$myArray[1] = array();...$myArray[99] = array();

This demonstrates manually assigning each nested array, but a for loop could certainly be used.

Elements of multidimensional arrays are accessed just like one dimensional arrays, only additional indexers are used.

$board[0][0] = false;$cell[15][6] = 16.4;$names[3]['first'] = 'Don';

Page 9: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

ApplicationUsing Multidimensional Arrays

Page 10: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

When do we use them…? There are a number of cases where multidimensional arrays are the natural choice for a data structure. For instance, in the case of modeling a chess board, a two dimensional array makes a lot of sense; a chess board is really a 2D array of squares and representing it with a 2D array of variables is pretty straightforward.

Tabular data may also be a good candidate for using a 2D array. Tables also make easy transitions to 2D arrays because they themselves our laid out in a similar fashion (rows by cols) and are easy to translate into array[row][col] structure.

Page 11: Multidimensional Arrays CIT 336. The Basics Explaining Multidimensional Arrays

Practical ExampleAn example from our textbook that doesn’t model a typical 2D object is an online shopping cart. The shopping cart is represented as an array. In this case, it will be an array of items (themselves an array), creating a multidimensional array.

$shoppingCart = array();

Then, each item is represented as an associative array.$item = array();$item['product_name'] = 'Book';$item['product_price'] = 15.05;$item['item_quantity'] = 1;

Items are then "added to the cart" simply by adding them to the $shoppingCart array.$shoppingCart[] = $item;

Additional items can easily be defined and added. The $shoppingCart array contains a series of items, and each item contains its own set of elements. This same approach can be used could be used to represent employees within a department, departments within an organization, and even organizations within groups of organizations.