Chapter 5: More Data Types in PHP
In the previous chapter, we looked at some of the basic data types in PHP. In this chapter, we’ll discuss two more data types – strings and arrays. You can create a new file named chap5.php to test the examples in this chapter.
5.1 Strings
A string refers to a piece of text. In PHP, strings must be enclosed in single or double quotation marks. For instance, if we write
$msg = 'Hello';
$greeting = "Good Morning";
$emptyStr = "";
$msg
and $greeting
store the strings 'Hello'
and "Good Morning"
respectively.
$emptyStr
, on the other hand, stores a special string known as an empty string. This is because there is no text enclosed within the pair of double quotation marks we assign to it.
In PHP, you can combine multiple strings using the concatenate operator (.). Let’s look at an example:
$areacode = "(208)";
$contact = '+1' . $areacode . '1234567';
echo $contact;
Here, we use the concatenate operator twice to concatenate the string '+1'
, the variable $areacode
and the string '1234567'
to form a new string. I’ve added spaces before and after the concatenate operators so that you can see the three components more clearly; you do not need to add these spaces.
After concatenating, we assign the new string to a variable called $contact
and use the echo
statement to echo its value.
If you run the code above, you’ll get
+1(208)1234567
as the output.
>5.1.1 Commonly used String Functions in PHP
Next, let’s discuss some of the commonly used string functions in PHP. PHP comes with a large number of built-in functions for working with strings. Most functions return a result after performing their tasks. We can assign the result to a variable or use the echo
statement to display the result directly.
A function may have different variations as some functions allow us to provide optional arguments to modify the function’s behavior. The examples below discuss the most common and useful approach to using each function.
strlen()
The strlen()
function gives us the length of a string.
Example:
$str1 = 'Good Day!';
echo strlen($str1);
Output:
9
Here, we declare a variable called $str1
and assign the string 'Good Day!'
to it. Next, we pass $str1
to strlen()
and use the echo
statement to display the function’s result directly.
We get 9
as the output because 4 ( 'Good'
) + 1 ( ' '
) + 3 ( 'Day'
) + 1 ( '!'
) = 9.
strtolower(), strtoupper()
The strtolower()
and strtoupper()
functions convert a string to lowercase and uppercase respectively and return the new string. The original string is not changed.
Example:
$str2 = 'Hello World';
$str3 = strtolower($str2);
$str4 = strtoupper($str2);
echo '<BR>'.$str2;
echo '<BR>'.$str3;
echo '<BR>'.$str4;
Here, we declare a variable called $str2
and assign the string 'Hello World'
to it. Next, we pass $str2
to strtolower()
and strtoupper()
and assign the results to $str3
and $str4
respectively.
Finally, we use three echo
statements to echo the values of $str2
, $str3
and $str4
. In each case, we concatenate '<BR>'
with the variable so that the output will start on a new line.
If you run the code above, you’ll get
Hello Worldhello worldHELLO WORLD
as the output.
trim()
The trim()
function removes whitespaces from the front and end of a string by default and returns the new string. You can specify other characters for it to remove by passing a second optional argument to the function.
Example 1:
$str5 = ' is ';
echo 'PHP'.$str5.'Fun<BR>';
echo 'PHP'.trim($str5).'Fun<BR>';
Output:
PHP is Fun
PHPisFun
Here, we first concatenate $str5
with the strings 'PHP'
and 'Fun<BR>'
and use an echo
statement to echo the resulting string directly. We get “PHP is Fun” as the output.
Next, we use the trim()
function to remove whitespaces from $str5
and concatenate it with 'PHP'
and 'Fun<BR>'
again. We get “PHPisFun” as the output this time.
Example 2:
$str6 = '**Hello**World***';
echo trim($str6, '*');
Output:
Hello**World
Here, we pass '*'
to the trim()
function as the second argument. As a result, asterisks (instead of whitespaces) are removed from the front and back of $str6
and we get “Hello**World” as the output.
substr()
The substr()
function returns a substring. To use this function, we need to pass two arguments to it – the string to extract the substring from and the position to start extracting it. We can also pass a third argument to specify the length of the substring to extract. If we do not provide this argument, the function extracts the substring starting from the specified starting position to the end of the string.
Positions in strings start from 0, not 1. For instance, if we have a string 'ABCDEF'
, 'A'
is at position 0, 'B'
is at position 1 and so on.
Positions can also be negative. If it is negative, it is counted from the back of the string. In 'ABCDEF'
, 'F'
is at position -1, 'E'
is at position -2 etc.
Example:
$str7 = 'ABCDEF';
echo substr($str7, 2).'<BR>';
echo substr($str7, -3).'<BR>';
echo substr($str7, 2, 1);
Output:
CDEF
DEF
C
Here, we declare a variable called $str7
and assign the string 'ABCDEF'
to it. Next, we pass $str7
to substr()
thrice to extract different substrings from it.
In the first two examples, the substr()
function extracts substrings starting from (and including) positions 2 and -3 respectively. Hence, we get “CDEF” and “DEF” as the outputs.
In the third example, we specify the desired length of the substring by passing a third optional argument to substr()
. As we specify the desired length to be 1, we get “C” as the output. Got it?
We’ve covered several string functions in PHP. For a full list of all the string functions available, you can check out the pagehttps://www.php.net/manual/en/ref.strings.php.
5.2 Using Strings to Represent Dates
Next, let’s learn to use strings to represent dates. To do that, we use a built-in function called strtotime()
.
5.2.1 The strtotime() function
As the name suggests, the strtotime()
function converts a string to time. It accepts a string describing a specific date (and time) and tries to convert that to a timestamp.
If you pass a string to the function that it is unable to convert, it returns false
. On the other hand, if you pass a string that it is able to convert, it parses the string and returns the UNIX timestamp.
A UNIX timestamp is an integer that gives us the number of seconds that have elapsed since January 1 1970 00:00:00 UTC.
For instance, if you run the statement
echo strtotime("next Monday");
you’ll get something similar to
1587340800
This gives the UNIX timestamp for next Monday (at the time of writing).
The strtotime()
function is quite smart and is able to convert various English textual datetime descriptions into UNIX timestamps. For instance, it has no problem converting strings like "now"
, "tomorrow"
, "next Monday"
, "15 Nov 2019"
or "+1 week"
.
However, while the function is easy to use, you’ll probably agree that the timestamp it returns is not very useful in most cases. If you want to get a more meaningful format for a date or time, you can use another built-in function called date()
.
5.2.2 The date() function
The date()
function accepts an optional timestamp and formats the timestamp into a more readable string. If the timestamp is not provided, it formats the current timestamp.
Suppose we want to format a timestamp that is 10 hours from the current time, we can use the statement below:
echo date('d-M-Y', strtotime("+ 10 hours"));
Here, we pass two arguments to the function.
The first argument specifies how we want the timestamp to be formatted. To do that, we use a string consisting of punctuation marks and predefined characters (as defined onhttps://www.php.net/manual/en/function.date.php).
In our example, we use the string 'd-M-Y'
.
The character ‘d’ indicates that we want the day to be represented as a two-digit number, using a leading zero if necessary (e.g., 3 is output as 03). The characters ‘M’ and ‘Y’ indicate that we want the month and year to be represented as a three-letter text (e.g., Jan) and a four-digit number respectively. Last but not least, the punctuation mark ‘-’ indicates that we want the day, month and year to be separated by hyphens.
After specifying the desired format, we pass a second argument ( strtotime("+ 10 hours")
) to the date()
function. This argument is optional and specifies the date we want the function to format.
If you run the echo
statement above, you’ll get an output similar to
03-Apr-2020
This gives the date 10 hours from now (at the point of writing). Got it?
5.2.3 Setting the timezone
The sections above discussed two of the many built-in date/time functions in PHP. While most of these functions are easy to use, do note that their results are affected by the timezone set in our PHP server.
For instance, while
echo date('d-M-Y', strtotime("+ 10 hours"));
gives us 03-Apr-2020
in one timezone, it may give us 04-Apr-2020
in another.
To avoid any discrepancy in results, it is strongly recommended that you manually set the timezone in your PHP server if you want to use any date/time function in PHP.
To do that, you need to modify the date.timezone
setting in php.ini. Refer to Chapter 2 for instructions on locating this file.
Once you have located the file, open it, and scroll to the bottom of the page.
Next, head over tohttps://www.php.net/manual/en/timezones.phpfor a list of valid timezone identifiers. Say you want PHP to use the New York timezone, you need to add the line
date.timezone=America/New_York
to the bottom of php.ini. Once that is done, save the file, restart Apache, and the setting will be updated. Got it?
If you do not have permission to update the php.ini file, you can use the date_default_timezone_set()
function. This function takes a timezone identifier and sets the default timezone used by all date/time functions in a PHP script.
For instance, to set the default timezone to the New York timezone, simply add
date_default_timezone_set('America/New_York');
to the start of your PHP script. This affects the timezone for that particular PHP script. If you want another PHP script to use the same timezone, you have to set it in that script too.
5.3 Arrays
Great! Now that we are familiar with strings and dates, let’s move on to another commonly used data type in PHP – arrays.
An array is a special data type that allows us to store related values together as a single variable.
For instance, suppose you want to store the test scores of 5 students. Instead of storing them as $marks1
, $marks2
, $marks3
, $marks4
and $marks5
, you can store them as an array.
5.3.1 Creating an Array
There are a few ways to create an array in PHP; the most common way is to use the array()
function.
Example 1
$firstArr = array();
This creates an empty array.
Example 2
$secondArr = array(11, 16, 4, 9, 12);
This creates an array with 5 elements (i.e. 5 values).
The array created is known as an indexed array, as each element in the array has an index.
Indexes start from 0. In other words, the first element ( 11
) has an index of 0, the second ( 16
) has an index of 1, and so on.
To access the individual elements in the array, we use its index and a pair of square brackets. For instance, if you write
echo $secondArr[3];
you are accessing the 4th element; you’ll get 9
as the output. You can also use the index to update the value of an element.
$secondArr[3] = 20;
updates the 4th element to 20
.
$secondArr
becomes (11, 16, 4, 20, 12)
Example 3
In addition to storing numbers, arrays can be used to store other data types. In the example below, $fruitsArr
is used to store strings.
$fruitsArr = array('Apple', 'Banana', 'Coconut');
Example 4
Besides indexed arrays, we can create associative arrays. An associative array is one where each value in the array is associated with a key. For instance, in the example below, the value 16
is associated with 'Jane'
(known as its key).
$assocArr = array(
'Peter' => 11,
'Jane' => 16,
'Paul' => 12
);
To access the values in an associative array, we use its key. If we write
echo $assocArr['Paul'];
we’ll get 12
as the output.
Example 5
Next, arrays can be used to store arrays. This is known as a multidimensional array.
$simpleMDArr = array(
array(1, 2, 1, 4, 5),
array(0, 5, 1, 3, 4),
array(4, 1, 7, 8, 9)
);
In the example above,
$simpleMDArr[0]
stores the array (1, 2, 1, 4, 5)
, $simpleMDArr[1]
stores (0, 5, 1, 3, 4)
, and $simpleMDArr[2]
stores (4, 1, 7, 8, 9)
.
If you want to access the elements in the “inner” arrays, you use two pairs of square brackets. For instance,
echo $simpleMDArr[2][3];
gives us the 4th (3+1) element in $simpleMDArr[2]
. We’ll get 8
as the output.
Example 6
Associative arrays can also be used to store arrays. In the example below, $assocMDArr
is an associative array used to store three indexed arrays.
$assocMDArr = array(
"first array" => array(1, 2, 6, 1, 3),
"second array" => array(3, 5, 1, 8, 9),
"third array" => array(1, 0, 9, 4, 7)
);
$assocMDArr["first array"]
stores the array (1, 2, 6, 1, 3)
.
If we write echo $assocMDArr["first array"][2];
we’ll get the 3rd element in $assocMDArr["first array"]
. In other words, we’ll get 6
as the output.
Example 7
Last but not least, we can use an associative array to store associative arrays.
$anotherAssocMDArr = array(
"first player" => array("name" => 'John', "age" => 25),
"second player" => array("name" => 'Tim', "age" => 35)
);
In the example above, $anotherAssocMDArr["first player"]
stores the array ("name" => 'John', "age" => 25)
.
If we write echo $anotherAssocMDArr["first player"]["age"];
we’ll get 25
as the output.
5.3.2 Displaying the Content of Arrays
Next, let’s learn two convenient ways to display the content of arrays.
One way is to use the var_dump()
function covered in the previous chapter. This function displays the data type and value of a variable. If we write
$myArray = array(2, 5.1, 'PHP', 105);
var_dump($myArray);
we’ll get
array(4) { [0]=> int(2) [1]=> float(5.1) [2]=> string(3) "PHP" [3]=> int(105) }
as the output.
“array(4)” indicates that $myArray
is an array with 4 elements.
The text inside the pair of braces that follows indicates the data type and value of each element. For instance, “[0] => int(2)” tells us that the element at index 0
is an integer of value 2
, “[1] => float(5.1)” tells us that the element at index 1
is a float of value 5.1
and so on.
Next, we have the print_r()
function.
This function is similar to the var_dump()
function. However, its output is more concise as it does not give us the data type of each element. For instance,
print_r($myArray);
gives us the following output:
Array ( [0] => 2 [1] => 5.1 [2] => PHP [3] => 105 )
5.3.3 Adding Elements to Arrays
After creating an array, we can add new elements to it. There are a few ways to do it. The easiest is to use the square bracket notation. This notation allows us to add one element at a time to an array.
Example 1
$addDemo = array(1, 5, 3, 9);
$addDemo[] = 7;
In the example above, we add 7
to $addDemo
. The array becomes (1, 5, 3, 9, 7)
.
Example 2
$addDemoAssoc = array('Peter'=>20, 'Jane'=>15);
$addDemoAssoc['James'] = 17;
Here, we add 'James'=>17
to $addDemoAssoc
. The array becomes ('Peter'=>20, 'Jane'=>15, 'James'=>17)
.
5.3.4 Deleting Elements from Arrays
Besides adding elements to arrays, we can delete elements from them. One way is to use the array_splice()
function.
To use this function, we need to pass two arguments to it – the array to remove elements from and the position to start removing them.
We can also pass a third argument to specify the number of elements to remove. If we do not provide this argument, the function removes all elements from the specified starting position to the end of the array.
Let’s look at some examples.
Example 1
$colors = array("red", "black", "pink", "white");
array_splice($colors, 2);
Here, we indicate that we want array_splice()
to remove all elements from $colors
, starting from (and including) the element at position 2.
$colors
becomes ("red", "black")
.
Example 2
$awardwinners = array("Gold"=>"Max", "Silver"=>"Boots", "Bronze"=>"Dora");
array_splice($awardwinners, 1);
Here, we want array_splice()
to remove all elements from $awardwinners
, starting from (and including) position 1.
$awardwinners
becomes ( "Gold"=>"Max"
).
Example 3
$pets = array("corgi", "poodle", "golden retriever", "jack russell");
array_splice($pets, 1, 2);
Here, we want to remove 2 elements from $pets
, starting from (and including) position 1.
$pets
becomes ("corgi", "jack russell")
.
5.3.5 Commonly used Array Functions in PHP
We’ve covered several array concepts in the previous sections. Before we end this chapter, let’s look at some commonly used array functions in PHP.
count()
The first is the count()
function. This function accepts an array and returns the number of elements in the array.
Example:
$countDemo = array(1, 4, 5, 1, 2);
echo count($countDemo);
Output:
5
array_search()
Next, we have the array_search()
function. This function searches for a particular value in an array. If the value is found, the function returns its corresponding index or key. Else, it returns false
. If more than one instance of the value is found, the index or key of the first matching value is returned.
Example:
$indexArrDemo = array(11, 4, 5, 1, 2, 5, 6);
$assocArrDemo = array('A'=>12, 'B'=>5, 'C'=>20);
echo array_search(5, $indexArrDemo).'<BR>';
echo array_search(20, $assocArrDemo).'<BR>';
var_dump(array_search('B', $assocArrDemo));
Output:
2
C
bool(false)
In the first echo
statement above, we use the array_search
() function to search for 5
in $indexArrDemo
. Although there are two values of 5
in the array, only the index of the first matching value is returned.
In the second echo
statement above, we use array_search
() to search for 20
in $assocArrDemo
. We get “C” as the output.
In the last echo
statement, we use array_search
() to search for 'B'
in $assocArrDemo
. We get false
as 'B'
is a key in the array, not a value.
in_array()
The in_array()
function is similar to the array_search()
function. However, instead of returning the key or index, it returns true
if the stated value is found in the array. Else, it returns false
.
With reference to $indexArrDemo
and $assocArrDemo
defined above,
var_dump(in_array(5, $indexArrDemo));
var_dump(in_array(20, $assocArrDemo));
var_dump(in_array('B', $assocArrDemo));
give us
bool(true) bool(true) bool(false)
as the output.
array_merge()
Finally, we have the array_merge()
function. This function merges two or more arrays and returns the merged array.
Example 1:
$num1 = array(100, 111, 120);
$num2 = array(100, 3, 5);
$num3 = array(1, 10);
$newArray1 = array_merge($num1, $num2, $num3);
$newArray1
becomes (100, 111, 120, 100, 3, 5, 1, 10)
.
Example 2:
$names1 = array(5 => "Peter", 24 => "Aaron");
$names2 = array(5 => "Zac", 4 => "Alfred", 7 => "Avi");
$newArray2 = array_merge($names1, $names2);
Keys are renumbered in the merged array if any of the arrays passed to the array_merge()
function is an associative array with integer keys.
In the example above, $newArray2
becomes (0 => "Peter", 1 => "Aaron", 2 => "Zac", 3 => "Alfred", 4 => "Avi")
.
The key for "Peter"
is renumbered from 5
to 0
. The same applies to all the other keys.
Example 3:
$str1 = array('A'=> 12, 'B' => 5, 'C' => 8);
$str2 = array('A' => 15, 'D' => 10);
$newArray3 = array_merge($str1, $str2);
If two or more array elements have the same string keys, the last one overrides the earlier ones.
In the example above, $newArray3
becomes ('A'=> 15, 'B' => 5, 'C' => 8, 'D' => 10)
.
'A'=> 12
is replaced by 'A'=> 15
.
We’ve covered some of the commonly used array functions in PHP. For a complete list of all the built-in array functions, check outhttps://www.php.net/manual/en/ref.array.php.