First, let’s go over three basic requirements for PHP code to be executed:
- Your filenames must end in
.phpto be interpreted as PHP by the server.
- All PHP code must be written inside opening (
<?php) and closing (
?>) PHP tags
- Your files must be hosted on a server that runs software (usually Apache) that runs PHP files.
Upshot: if your browser is spitting out raw PHP code instead of executing that code, check the three above requirements.
In PHP, variables begin with a dollar sign (
$) and can be used to store pieces of text (aka strings) as well as numbers. We store information in variables with a PHP statement that begins with the variable name and is followed by the equals sign (aka the “assignment operator”) and the value we wish to store. Note that strings need quotation marks around them, while numbers do not. Variable names cannot contain spaces, hyphens, or most punctuation characters besides the underscore (
_). They also may not begin with a number.
<?php $my_name = "Joe Schmoe"; // a string needs quotation marks $my_age = 23; // a number doesn't need quotation marks echo ("<p>My name is $my_name and my age is $my_age.</p>"); ?>
When a browser requests our page, PHP will echo the string as HTML (the text in quotes above) but replace the variables with the values that have been stored i them:
<p>My name is Joe Schmoe and my age is 23.</p>
As we’ve explored in class, there are a variety of ways to combine, manipulate, and change variables. Remember that PHP is procedural and in many cases the sequence of your code matters:
<?php $my_name = "Joe"; // $my_name is now assigned the value "Joe" $my_name = "Fred"; // $my_name is now assigned the value "Fred" -- "Joe" is erased from memory $my_name = $my_name . " Shropshire"; // use concatenation operator (.) with a string to assign $my_name the value "Fred Shropshire". $my_age = (5 * 30) - 100; // $my_age is now 50 ?>
Arrays are also a kind of variable, but they are a bit more complex than scalar variables. If you think of a scalar variable as a text file, arrays are a spreadsheet: they store multiple “elements” in a sequence, and you can access particular elements separately.
Suppose you have some information about a user. Rather than store that information in m variables (
$user_nickname), you could use an array to store all that information in the variable
$user. Arrays have the following structure: each “element” (an item in the array) has both a key and a value. The key is essentially a name for the element: it identifies which one we’re dealing with, while the value is the contents of that element. For example:
<?php // create array elements and assign values $user[name] = "Joseph Schmoe"; // element 1: key is the string "name", value is the string "Joseph Schmoe" $user[age] = 25; // element 2: key is the string "age", value is the number 25 $user[nickname] = "Joe"; // element 3: key is the string "nickname", value is the string "Joe" ?>
You access and output the value of each element with the same syntax:
<?php echo ("<p>The user is named $user[name], is $user[age] years old, and is nicknamed $user[nickname].</p>"); ?>
An indexed array is simply an array where the keys are numbers, starting with 0 and incrementing by one whenever an element is added. Indexed arrays are easier to manipulate programmatically (the array keys are fairly predictable), but of course the keys don’t carry much information about what value is stored in each element. They’re most often used for lists of content where the meaning of each element is obvious from the variable name:
<?php // create array elements and assign values $site_users = "jschmoe"; $site_users = "bsmith"; $site_users = "ajones"; $site_users = "cwilson"; ?>
If you leave out the keys when assigning the value to an element, PHP will just create numeric keys for you, incrementing them as it goes. So this does exactly the same thing as the code above:
<?php // create array elements and assign values $site_users = "jschmoe"; // automatically gets array key 0 $site_users = "bsmith"; // automatically gets array key 1 $site_users = "ajones"; // automatically gets array key 2 $site_users = "cwilson"; // automatically gets array key 3 ?>
We’ve already seen how PHP will replace any variable with its value. What’s tricky about arrays is that you can do this with the keys as well as the whole element:
<?php $attribute = "nickname"; $user = "3"; echo $user[nickname]; // outputs "Joe"; echo $user[$attribute]; // also outputs "Joe", because $attribute = "nickname" echo $site_users ; // outputs "ajones" echo $site_users[$user] ; // also outputs "ajones", because $user = 3 ?>