chapter 7 manipulating arrays php programming with mysql

44
Chapter 7 Manipulating Arrays PHP Programming with MySQL

Post on 21-Dec-2015

240 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 7 Manipulating Arrays PHP Programming with MySQL

Chapter 7

Manipulating Arrays

PHP Programming with MySQL

Page 2: Chapter 7 Manipulating Arrays PHP Programming with MySQL

2PHP Programming with MySQL

Objectives

• Manipulate array elements• Declare and initialize associative arrays• Use iteration functions• Find and extract elements and values• Sort, combine, and compare arrays

Page 3: Chapter 7 Manipulating Arrays PHP Programming with MySQL

3PHP Programming with MySQL

addslashes() function

• PHP automatically escapes quotes, called magic quotes– My friend’s name is “Fred”

gets submitted asMy friend\’s name is \“Fred\”

• It is better to disable magic quotes– In php.ini, set magic_quotes_gpc=false

• Add escapes manually with addslashes()– $phrase=addslashes($_GET[‘phrase’]);

Page 4: Chapter 7 Manipulating Arrays PHP Programming with MySQL

4PHP Programming with MySQL

Manipulating Elements

$Topic = $_POST['topic'];$Name = $_POST['name'];$Message = $_POST['message'];$PostMessage = addslashes(“$Topic~$Name~$Message\n”);$MessageStore = fopen(“messages.txt”, “a”);fwrite($MessageStore, “$PostMessage”);fclose($MessageStore);echo “<p><strong>Topic</strong>: $Topic<br />”;echo “<strong>Name</strong>: $Name<br />”;echo “<strong>Message</strong>: $Message</p>”;

Page 5: Chapter 7 Manipulating Arrays PHP Programming with MySQL

5PHP Programming with MySQL

Manipulating Elements (continued)

if (!file_exists(“messages.txt”) || filesize(“messages.txt”) == 0)echo “<p>There are no messages posted.</p>”;

else {$MessageArray = file(“messages.txt”);for ($i=0; $i<count($MessageArray); ++$i) {

$CurMessage = explode(“~”, $MessageArray[$i]);echo “<tr>”;echo “<td><strong>” . ($i + 1) . “</strong>.</td>”;echo “<td><strong>Topic</strong>: “

. stripslashes($CurMessage[0]) . “<br />”;echo “<strong>Name</strong>: “

. stripslashes($CurMessage[1]) . “<br />”;echo “<strong>Message</strong>: “

. stripslashes($CurMessage[2]);echo “</td></tr>”;

}}

Page 6: Chapter 7 Manipulating Arrays PHP Programming with MySQL

6PHP Programming with MySQL

Manipulating Elements (continued)

Figure 7-1 Post New Message page of the Discussion Forum script

Page 7: Chapter 7 Manipulating Arrays PHP Programming with MySQL

7PHP Programming with MySQL

Manipulating Elements (continued)

Figure 7-2 Message Posted page of the Discussion Forum script

Page 8: Chapter 7 Manipulating Arrays PHP Programming with MySQL

8PHP Programming with MySQL

Adding and Removing Elements from the Beginning of an Array

• The array_shift() function removes the first element from the beginning of an array– Pass the name of the array whose first element

you want to remove

• The array_unshift() function adds one or more elements to the beginning of an array– Pass the name of an array followed by comma-

separated values for each element you want to add

Page 9: Chapter 7 Manipulating Arrays PHP Programming with MySQL

9PHP Programming with MySQL

Adding and Removing Elements from the Beginning of an Array (continued)

$TopGolfers = array(“Ernie Els”,“Phil Mickelson”,“Retief Goosen”,“Padraig Harrington”,“David Toms”,“Sergio Garcia”,“Adam Scott”,“Stewart Cink”);

array_shift($TopGolfers);array_unshift($TopGolfers, “Tiger Woods”, “Vijay Singh”);print_r($TopGolfers);

Page 10: Chapter 7 Manipulating Arrays PHP Programming with MySQL

10PHP Programming with MySQL

Adding and Removing Elements from the Beginning of an Array (continued)

Figure 7-3 Output of an array modified with the array_shift() and array_unshift() functions

Page 11: Chapter 7 Manipulating Arrays PHP Programming with MySQL

11PHP Programming with MySQL

Adding and Removing Elements from the End of an Array

• The array_pop() function removes the last element from the end of an array– Pass the name of the array whose last

element you want to remove

• The array_push() function adds one or more elements to the end of an array– Pass the name of an array followed by

comma-separated values for each element you want to add

Page 12: Chapter 7 Manipulating Arrays PHP Programming with MySQL

12PHP Programming with MySQL

Adding and Removing Elements from the End of an Array (continued)

$HospitalDepts = array(

“Anesthesia”,

“Molecular Biology”,

“Neurology”,

“Pediatrics”);

array_pop($HospitalDepts);

array_push($HospitalDepts, “Psychiatry”, “Pulmonary Diseases”);

Page 13: Chapter 7 Manipulating Arrays PHP Programming with MySQL

13PHP Programming with MySQL

Adding and Removing Elements Within an Array

• The array_splice() function adds or removes array elements

• The array_splice() function renumbers the indexes in the array

• The syntax for the array_splice() function is: array_splice(array_name, start, characters_to_delete, values_to_insert);

Page 14: Chapter 7 Manipulating Arrays PHP Programming with MySQL

14PHP Programming with MySQL

array_splice() Function

• To add an element within an array, include a value of 0 as the third argument

$HospitalDepts = array(

“Anesthesia”, // first element (0)

“Molecular Biology”, // second element (1)

“Neurology”, // third element (2)

“Pediatrics”); // fourth element (3)

array_splice($HospitalDepts, 3, 0, “Ophthalmology”);

Page 15: Chapter 7 Manipulating Arrays PHP Programming with MySQL

15PHP Programming with MySQL

array_splice() Function (continued)

• To add more than one element within an array, pass the array() construct as the fourth argument

• Separate the new element values by commas$HospitalDepts = array(

“Anesthesia”, // first element (0)

“Molecular Biology”, // second element (1)

“Neurology”, // third element (2)

“Pediatrics”); // fourth element (3)

array_splice($HospitalDepts, 3, 0, array(“Ophthalmology”,

“Otolaryngology”));

Page 16: Chapter 7 Manipulating Arrays PHP Programming with MySQL

16PHP Programming with MySQL

array_splice() Function (continued)

• Delete array elements by omitting the fourth argument from the array_splice() function$HospitalDepts = array(

“Anesthesia”, // first element (0)

“Molecular Biology”, // second element (1)

“Neurology”, // third element (2)

“Pediatrics”); // fourth element (3)

array_splice($HospitalDepts, 1, 2);

Page 17: Chapter 7 Manipulating Arrays PHP Programming with MySQL

17PHP Programming with MySQL

unset() Function

• The unset() function removes array elements and other variables

• Pass to the unset() function the array name and index number of the element you want to remove

• To remove multiple elements, separate each index name and element number with commas

unset($HospitalDepts[1], $HospitalDepts[2]);

Page 18: Chapter 7 Manipulating Arrays PHP Programming with MySQL

18PHP Programming with MySQL

Removing Duplicate Elements

• The array_unique() function removes duplicate elements from an array

• Pass to the array_unique() function the name of the array from which you want to remove duplicate elements

• The array_values() and array_unique() functions do not operate directly on an array

• The array_unique() function does renumber the indexes after removing duplicate values in an array

Page 19: Chapter 7 Manipulating Arrays PHP Programming with MySQL

19PHP Programming with MySQL

array_unique()Function

$TopGolfers = array(“Tiger Woods”, “Tiger Woods”, “Vijay Singh”, “Vijay

Singh”,“Ernie Els”, “Phil Mickelson”, “Retief Goosen”,“Retief Goosen”, “Padraig Harrington”, “David Toms”,“Sergio Garcia”, “Adam Scott”, “Stewart Cink”);

echo “<p>The world's top golfers are:</p><p>”;$TopGolfers = array_unique($TopGolfers);$TopGolfers = array_values($TopGolfers);for ($i=0; $i<count($TopGolfers); ++$i) {

echo “{$TopGolfers[$i]}<br />”;}echo “</p>”;

Page 20: Chapter 7 Manipulating Arrays PHP Programming with MySQL

20PHP Programming with MySQL

array_unique()Function (continued)

Figure 7-4 Output of an array after removing duplicate values with the array_unique() function

Page 21: Chapter 7 Manipulating Arrays PHP Programming with MySQL

21PHP Programming with MySQL

Declaring and Initializing Associative Arrays

• With associative arrays, you specify an element’s key by using the array operator (=>)

• The syntax for declaring and initializing an associative array is:

$array_name = array(key=>value, ...);

Figure 7-5 Output of array with associative and indexed elements

Page 22: Chapter 7 Manipulating Arrays PHP Programming with MySQL

22PHP Programming with MySQL

Declaring and Initializing Associative Arrays (continued)

$Territories[100] = “Nunavut”;

$Territories[] = “Northwest Territories”;

$Territories[] = “Yukon Territory”;

print_r($Territories);

echo '<p>The $Territories array consists of ',

count($Territories), “ elements.</p>”;

Figure 7-6 Output of an array with a starting index of 100

Page 23: Chapter 7 Manipulating Arrays PHP Programming with MySQL

23PHP Programming with MySQL

Iterating Through an Array

• The internal array pointer refers to the currently selected element in an array

Table 7-1 Array pointer iteration functions

Page 24: Chapter 7 Manipulating Arrays PHP Programming with MySQL

24PHP Programming with MySQL

Iterating Through an Array (continued)

Figure 7-7 Output of an array without advancing the internal array pointer

Page 25: Chapter 7 Manipulating Arrays PHP Programming with MySQL

25PHP Programming with MySQL

Determining if a Value Exists

• The in_array() function returns a Boolean value of true if a given value exists in an array

• The array_search() function determines whether a given value exists in an array and– Returns the index or key of the first matching

element if the value exists, or

– Returns false if the value does not exist

if (in_array(“Neurology”, $HospitalDepts))

echo “<p>The hospital has a Neurology department.</p>”;

Page 26: Chapter 7 Manipulating Arrays PHP Programming with MySQL

26PHP Programming with MySQL

Determining if a Key Exists

• The array_key_exists() function determines whether a given index or key exists

• You pass two arguments to the array_key_exists() function: – The first argument represents the key to

search for

– The second argument represents the name of the array in which to search

Page 27: Chapter 7 Manipulating Arrays PHP Programming with MySQL

27PHP Programming with MySQL

Determining if a Key Exists (continued)

$GamePieces[“Dancer”] = “Daryl”;$GamePieces[“Fat Man”] = “Dennis”;$GamePieces[“Assassin”] = “Jennifer”;if (array_key_exists(“Fat Man”, $GamePieces))

echo “<p>{$GamePieces[“Fat Man”]} is already 'Fat Man'.</p>”;

else {$GamePieces[“Fat Man”] = “Don”;echo “<p>{$GamePieces[“Fat Man”]} is now 'Fat Man'.</p>”;

}

Page 28: Chapter 7 Manipulating Arrays PHP Programming with MySQL

28PHP Programming with MySQL

Returning a Portion of an Array

• The array_slice() function returns a portion of an array and assigns it to another array

• The syntax for the array_slice() function is:array_slice(array_name, start, characters_to_return);

Page 29: Chapter 7 Manipulating Arrays PHP Programming with MySQL

29PHP Programming with MySQL

Returning a Portion of an Array (continued)

$TopGolfers = array(“Tiger Woods”, “Vijay Singh”, “Ernie Els”,

“Phil Mickelson”, “Retief Goosen”, “Padraig Harrington”, “David

Toms”, “Sergio Garcia”, “Adam Scott”, “Stewart Cink”);

$TopFiveGolfers = array_slice($TopGolfers, 0, 5);

echo “<p>The top five golfers in the world are:</p><p>”;

for ($i=0; $i<count($TopFiveGolfers); ++$i) {

echo “{$TopFiveGolfers[$i]}<br />”;

}

echo “</p>”;

Page 30: Chapter 7 Manipulating Arrays PHP Programming with MySQL

30PHP Programming with MySQL

Returning a Portion of an Array (continued)

Figure 7-8 Output of an array returned with the array_slice() function

Page 31: Chapter 7 Manipulating Arrays PHP Programming with MySQL

31PHP Programming with MySQL

Sorting Arrays

• The most commonly used array sorting functions are:– sort() and rsort() for indexed arrays– ksort() and krsort() for associative arrays

Page 32: Chapter 7 Manipulating Arrays PHP Programming with MySQL

32PHP Programming with MySQL

Sorting Arrays (continued)

Table 7-2 Array sorting functions

Page 33: Chapter 7 Manipulating Arrays PHP Programming with MySQL

33PHP Programming with MySQL

Sorting Arrays (continued)Table 7-2 Array sorting functions (continued)

Page 34: Chapter 7 Manipulating Arrays PHP Programming with MySQL

34PHP Programming with MySQL

Sorting Arrays (continued)

Table 7-2 Array sorting functions (continued)

• If the sort() and rsort() functions are used on an associative array, the keys are replaced with indexes

Page 35: Chapter 7 Manipulating Arrays PHP Programming with MySQL

35PHP Programming with MySQL

Sorting Arrays (continued)

Figure 7-9 Output of an array after applying the sort() and rsort() functions

Page 36: Chapter 7 Manipulating Arrays PHP Programming with MySQL

36PHP Programming with MySQL

Sorting Arrays (continued)

Figure 7-10 Output of an associative array after executing the sort() function

Figure 7-11 Output of an associative array after executing the ksort() function

Page 37: Chapter 7 Manipulating Arrays PHP Programming with MySQL

37PHP Programming with MySQL

Combining Arrays

• To append one array to another, use the addition (+) or the compound assignment operator (+=)

• To merge two or more arrays use the array_merge() function

• The syntax for the array_merge() function is:new_array = array_merge($array1, $array2,

$array3, ...);

Page 38: Chapter 7 Manipulating Arrays PHP Programming with MySQL

38PHP Programming with MySQL

Combining Arrays (continued)

$Provinces = array(“Newfoundland and Labrador”, “Prince Edward Island”, “Nova Scotia”, “New Brunswick”, “Quebec”, “Ontario”, “Manitoba”, “Saskatchewan”, “Alberta”, “British Columbia”);$Territories = array(“Nunavut”, “Northwest Territories”, “Yukon Territory”);$Canada = $Provinces + $Territories;print_r($Canada);

Figure 7-12 Output of two combined indexed arrays

Page 39: Chapter 7 Manipulating Arrays PHP Programming with MySQL

39PHP Programming with MySQL

Comparing Arrays

• The array_diff() function returns an array of elements that exist in one array but not in any other arrays to which it is compared

• The syntax for the array_diff() function is:new_array = array_diff($array1, $array2, $array3, ...);

• The array_intersect() function returns an array of elements that exist in all of the arrays that are compared

Page 40: Chapter 7 Manipulating Arrays PHP Programming with MySQL

40PHP Programming with MySQL

Comparing Arrays (continued)

• The syntax for the array_intersect() function is: new_array = array_intersect($array1, $array2, $array3, ...);

Page 41: Chapter 7 Manipulating Arrays PHP Programming with MySQL

41PHP Programming with MySQL

Comparing Arrays (continued)

Figure 7-13 Output of an array created with the array_intersect() function

Page 42: Chapter 7 Manipulating Arrays PHP Programming with MySQL

42PHP Programming with MySQL

Summary

• The array_shift() function removes the first element from the beginning of an array

• The array_unshift() function adds one or more elements to the beginning of an array

• The array_pop() function removes the last element from the end of an array

• The array_push() function adds one or more elements to the end of an array

• The array_splice() function adds or removes array elements

Page 43: Chapter 7 Manipulating Arrays PHP Programming with MySQL

43PHP Programming with MySQL

Summary (continued)

• The unset() function removes array elements and other variables

• The array_values() function renumbers an indexed array’s elements

• The array_unique() function removes duplicate elements from an array

• The in_array() function returns a Boolean value of true if a given value exists in an array

• The array_search() function determines whether a given value exists in an array

Page 44: Chapter 7 Manipulating Arrays PHP Programming with MySQL

44PHP Programming with MySQL

Summary (continued)

• The array_key_exists() function determines whether a given index or key exists

• The array_slice() function returns a portion of an array and assigns it to another array

• The array_diff() function returns an array of elements that exist in one array but not in any other arrays to which it is compared

• The array_intersect() function returns an array of elements that exist in all of the arrays that are compared