1. Trang chủ
  2. » Công Nghệ Thông Tin

PHP 5/MySQL Programming- P33 pot

5 198 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 220,12 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Building an Associative Array Here is the code from assoc.php, which generates the array of state capitals: $stateCap[“Alaska”] = “Juneau”; $stateCap[“Indiana”] = “Indianapolis”; $stateC

Trang 1

g r

s o

l u

g in

e r

Examining the assoc.php Program

Imagine that you want to store a list of capital cities You could certainly store the cities in an array However, if your main interest is in the relationship between a state and its capital, it could be difficult to maintain the relationship using arrays In this particular instance, it would be nice if you could use the name of the state as the array index (the element’s number, or position, within the array) rather than a number

Building an Associative Array

Here is the code from assoc.php, which generates the array of state capitals:

$stateCap[“Alaska”] = “Juneau”;

$stateCap[“Indiana”] = “Indianapolis”;

$stateCap[“Michigan”] = “Lansing”;

The associative array is just like a normal array, except the index values are strings Note that the indices must be inside quotation marks Once you have cre-ated an associative array, it is used much like a normal array

print “Alaska: “;

print $stateCap[“Alaska”];

print “<br><br>”;

FIGURE 5.5

This page uses

associative arrays

to relate countries

and states to their

capital cities.

Trang 2

Once again, the array’s index is a quoted string The associative form is terrific

for data like this In essence, it lets you “look up” the capital city if you know the

state name

Building an Associative Array

with the array() Function

If you know the values you want in your array, you can use the array()function to

build an associative array However, building associative arrays requires a slightly

different syntax than the garden variety arrays you encountered in Chapter 4

139

l i

I N D IZZY - ARRAY

If all this associative array talk is making you dizzy, don’t panic It’s just a new

name for something you’re very familiar with Think about the way HTML

attrib-utes work Each tag has a number of attribattrib-utes that you can use in any order.

For example, a standard button might look like this:

<input type = “button”

value = “Save the world.”>

This button has two attributes Each attribute is made up of a name/value pair.

The keywords type and value are names (or indices, or keys, depending on how

you want to think of it) and the terms button and Save the world are the

values associated with those names Cascading style sheets (CSS) use a different

syntax for exactly the same idea The CSS element indicates a series of

modifi-cations to the paragraph tag:

p {background-color:red;

color:yellow;

font-size:14pt}

While the syntax is different, the same pattern applies The critical part of a CSS

definition is a list of name/value pairs.

Associative arrays naturally pop up in one more place As information comes

into your program from an HTML form, it comes in as an associative array The

name of each element becomes an index, and the value of that form element is

translated to the value of the array element Later in this chapter you see how

to take advantage of this.

An associative array is simply a data structure used when the name/value

rela-tionship is the easiest way to work with some kind of data.

Trang 3

g r

s o

l u

g in

e r

I build the $worldCaparray using the array()syntax:

$worldCap = array(

“Albania”=>”Tirana”,

“Japan”=>”Tokyo”,

“United States”=>”Washington DC”

);

The array()function requires the data when you are building an ordinary array, but doesn’t require specified indices The function automatically generates each element’s index by grabbing the next available integer In an associative array, you are responsible for providing both the data and the index

The general format for this assignment uses a special kind of assignment opera-tor The =>operator indicates that an element holds some kind of value I gener-ally read it as holds,so you can say Japan holds Tokyo In other words, “Japan” =>

“Tokyo” indicates that PHP should generate an array element with the index

“Japan”and store the value “Tokyo”in that element You can access the value of this array just like any other associative array:

print “Japan: “;

print $worldCap[“Japan”];

print “<br><br>”;

Using foreach with Associative Arrays

The foreach loop is just as useful with associative arrays as it is with vanilla arrays However, it uses a slightly different syntax Take a look at this code from the assoc.phppage:

foreach ($worldCap as $country => $capital){

print “$country: $capital<br>\n”;

} // end foreach

A foreachloop for a regular array uses only one variable because the index can

be easily calculated In an associative array, each element in the array has a unique index and value The associative form of the foreachloop takes this into account by indicating two variables The first variable holds the index The sec-ond variable refers to the value associated with that index Inside the loop, you can refer to the current index and value using whatever variable names you des-ignated in the foreachstructure

Each time through the loop, you are given a name/value pair In this example, the name is stored in the variable $country,because all the indices in this array are

Trang 4

names of countries Each time through the loop, $countryhas a different value.

In each iteration, the value of the $capitalvariable contains the array value

cor-responding to the current value of $country

Unlike traditional arrays, you cannot rely on associative arrays to return in any particular order when you use a foreach loop to access array elements If you need elements to show up in a particular order, call them explicitly.

Using Built-In Associative Arrays

Associative arrays are extremely handy because they reflect a kind of

informa-tion storage very frequently used In fact, you’ve been using associative arrays in

disguise ever since chapter 2, “Using Variables and Input.” Whenever your PHP

program receives data from a form, that data is actually stored in a number of

associative arrays for you A variable was automatically created for you by PHP for

each form element

However, you can’t always rely on that particular bit of magic Increasingly,

server administrators are turning off this automatic variable creation for

secu-rity reasons In fact, the default setup for PHP is now to have this behavior (with

the odd name render_globals) turned off

It’s handy to know how PHP gets data from the form as a good example of

asso-ciative arrays It’s also useful because you may need to know how to get form data

without the variables being created explicitly for you

Introducing the formReader.php Program

The formReader.php program is actually one of the first PHP programs I ever

wrote, and it’s one I use frequently It’s very handy, because it can take the input

from any HTML form and report the names and values of each of the form

ele-ments on the page To illustrate, Figure 5.6 shows a typical Web page with a form

When the user clicks the Submit Query button, formReader responds with some

basic diagnostics, as you can see from Figure 5.7

Reading the $_REQUEST Array

The formReader.phpprogram does its work by taking advantage of an associative

array built into PHP Until now, you’ve simply relied on PHP to create a variable

for you based on the input elements of whatever form calls your program This

T R A P

141

l i

Trang 5

g r

s o

l u

g in

e r

automatic variable creation is called register_globals While this is an extremely convenient feature, it can be dangerous, so some administrators turn

it off Even when register_globalsis active, it can be useful to know other ways

of accessing the information that comes from the form

FIGURE 5.6

This form, which

has three basic

fields, calls the

formReader.php

program.

FIGURE 5.7

The formReader.php

program

determines each

field and its value.

Ngày đăng: 07/07/2014, 02:20