PHP Interview Questions


Dear readers, these PHP Programming Language Interview Questions have been designed specially to get you acquainted with the nature of questions you may encounter during your interview for the subject of PHP Programming Language. As per my experience good interviewers hardly plan to ask any particular question during your interview, normally questions start with some basic concept of the subject and later they continue based on further discussion and what you answer −

PHP is a recursive acronym for "PHP: Hypertext Preprocessor". PHP is a server side scripting language that is embedded in HTML. It is used to manage dynamic content, databases, session tracking, even build entire e-commerce sites.

Common uses of PHP −

  • PHP performs system functions, i.e. from files on a system it can create, open, read, write, and close them.

  • PHP can handle forms, i.e. gather data from files, save data to a file, thru email you can send data, return data to the user.

  • You add, delete, modify elements within your database thru PHP.

  • Access cookies variables and set cookies.

  • Using PHP, you can restrict users to access some pages of your website.

  • It can encrypt data.

All PHP code must be included inside one of the three special markup tags ate are recognised by the PHP Parser.

<?php PHP code goes here ?>
<?    PHP code goes here ?>
<script language="php"> PHP code goes here </script>
Most common tag is the <?php...?>

The PHP configuration file, php.ini, is the final and most immediate way to affect PHP's functionality. The php.ini file is read each time PHP is other words, whenever httpd is restarted for the module version or with each script execution for the CGI version. If your change isn.t showing up, remember to stop and restart httpd. If it still isn.t showing up, use phpinfo() to check the path to php.ini.

The PHP parsing engine needs a way to differentiate PHP code from other elements in the page. The mechanism for doing so is known as 'escaping to PHP.'

Whitespace is the stuff you type that is typically invisible on the screen, including spaces, tabs, and carriage returns (end-of-line characters). PHP whitespace insensitive means that it almost never matters how many whitespace characters you have in a whitespace character is the same as many such characters.

No, PHP is partially case sensitive.

Here are the most important things to know about variables in PHP.

  • All variables in PHP are denoted with a leading dollar sign ($).

  • The value of a variable is the value of its most recent assignment.

  • Variables are assigned with the = operator, with the variable on the left-hand side and the expression to be evaluated on the right.

  • Variables can, but do not need, to be declared before assignment.

  • Variables in PHP do not have intrinsic types - a variable does not know in advance whether it will be used to store a number or a string of characters.

  • Variables used before they are assigned have default values.

  • PHP does a good job of automatically converting types from one to another when necessary.

  • PHP variables are Perl-like.

PHP has a total of eight data types which we use to construct our variables −

  • Integers − are whole numbers, without a decimal point, like 4195.

  • Doubles − are floating-point numbers, like 3.14159 or 49.1.

  • Booleans − have only two possible values either true or false.

  • NULL − is a special type that only has one value: NULL.

  • Strings − are sequences of characters, like 'PHP supports string operations.'

  • Arrays − are named and indexed collections of other values.

  • Objects − are instances of programmer-defined classes, which can package up both other kinds of values and functions that are specific to the class.

  • Resources − are special variables that hold references to resources external to PHP (such as database connections).

Rules for naming a variable are following −

  • Variable names must begin with a letter or underscore character.

  • A variable name can consist of numbers, letters, underscores but you cannot use characters like + , - , % , ( , ) . & , etc

Here are the rules for determine the "truth" of any value not already of the Boolean type −

  • If the value is a number, it is false if exactly equal to zero and true otherwise.

  • If the value is a string, it is false if the string is empty (has zero characters) or is the string "0", and is true otherwise.

  • Values of type NULL are always false.

  • If the value is an array, it is false if it contains no other values, and it is true otherwise. For an object, containing a value means having a member variable that has been assigned a value.

  • Valid resources are true (although some functions that return resources when they are successful will return FALSE when unsuccessful).

  • Don't use double as Booleans.

NULL is a special type that only has one value: NULL. To give a variable the NULL value, simply assign it like this −

$my_var = NULL;

The special constant NULL is capitalized by convention, but actually it is case insensitive; you could just as well have typed −

$my_var = null;

A variable that has been assigned NULL has the following properties:

It evaluates to FALSE in a Boolean context.

It returns FALSE when tested with IsSet() function.

To define a constant you have to use define() function and to retrieve the value of a constant, you have to simply specifying its name. Unlike with variables, you do not need to have a constant with a $.

As indicated by the name, this function will return the value of the constant. This is useful when you want to retrieve value of a constant, but you do not know its name, i.e. It is stored in a variable or returned by a function.

define("MINSIZE", 50);
echo constant("MINSIZE"); // same thing as the previous line

Only scalar data (boolean, integer, float and string) can be contained in constants.

  • There is no need to write a dollar sign ($) before a constant, where as in Variable one has to write a dollar sign.

  • Constants cannot be defined by simple assignment, they may only be defined using the define() function.

  • Constants may be defined and accessed anywhere without regard to variable scoping rules.

  • Once the Constants have been set, may not be redefined or undefined.

PHP provides a large number of predefined constants to any script which it runs known as magic constants.

_LINE_ − The current line number of the file.

_FILE_ − The full path and filename of the file. If used inside an include,the name of the included file is returned. Since PHP 4.0.2, _FILE_ always contains an absolute path whereas in older versions it contained relative path under some circumstances.

_FUNCTION_ − The function name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the function name as it was declared (case-sensitive). In PHP 4 its value is always lowercased.

_CLASS_ − The class name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the class name as it was declared (case-sensitive). In PHP 4 its value is always lowercased.

_METHOD_ − The class method name. (Added in PHP 5.0.0) The method name is returned as it was declared (case-sensitive).

break terminates the for loop or switch statement and transfers execution to the statement immediately following the for loop or switch.

continue causes the loop to skip the remainder of its body and immediately retest its condition prior to reiterating.

The foreach statement is used to loop through arrays. For each pass the value of the current array element is assigned to $value and the array pointer is moved by one and in the next pass next element will be processed.

foreach (array as value)
    code to be executed;

Numeric array − An array with a numeric index. Values are stored and accessed in linear fashion.

Associative array − An array with strings as index. This stores element values in association with key values rather than in a strict linear index order.

Multidimensional array − An array containing one or more arrays and values are accessed using multiple indices.

To concatenate two string variables together, use the dot (.) operator −

$string1="Hello World";
echo $string1 . " " . $string2;

This will produce following result −

Hello World 1234

The strlen() function is used to find the length of a string. Let's find the length of our string "Hello world!" −

echo strlen("Hello world!");

This will produce following result −


The strpos() function is used to search for a string or character within a string. If a match is found in the string, this function will return the position of the first match. If no match is found, it will return FALSE. Let's see if we can find the string "world" in our string −

echo strpos("Hello world!","world");

This will produce following result −


PHP provides a function getenv() to access the value of all the environment variables.

One of the environemnt variables set by PHP is HTTP_USER_AGENT which identifies the user's browser and operating system.

The PHP rand() function is used to generate a random number. This function can generate numbers with-in a given range. The random number generator should be seeded to prevent a regular pattern of numbers being generated. This is achieved using the srand() function that specifiies the seed number as its argument.

The PHP default variable $_PHP_SELF is used for the PHP script name and when you click "submit" button then same PHP script will be called.

The PHP header() function supplies raw HTTP headers to the browser and can be used to redirect it to another location. The redirection script should be at the very top of the page to prevent any other part of the page from loading. The target is specified by the Location: header as the argument to the header() function. After calling this function the exit() function can be used to halt parsing of rest of the code.

The HTTP header will be different from the actual header where we send Content-Type as text/html\n\n. In this case content type will be application/octet-stream and actual file name will be concatenated alongwith it. For example,if you want make a FileName file downloadable from a given link then its syntax will be as follows.

# HTTP Header
print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";
print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";
# Actual File Content
open( FILE, "<FileName" );
while(read(FILE, $buffer, 100) )

The PHP provides $_GET associative array to access all the sent information using GET method.

The PHP provides $_POST associative array to access all the sent information using POST method.

The PHP $_REQUEST variable contains the contents of both $_GET, $_POST, and $_COOKIE. We will discuss $_COOKIE variable when we will explain about cookies. The PHP $_REQUEST variable can be used to get the result from form data sent with both the GET and POST methods.

array() − Creates an array.

sort() − Sorts an array.

Singly quoted strings are treated almost literally, whereas doubly quoted strings replace variables with their values as well as specially interpreting certain character sequences.

$variable = "name";
$literally = 'My $variable will not print!\\n';
print "<br />";
$literally = "My $variable will print!\\n";

This will produce following result −

My $variable will not print!\n
My name will print

To concatenate two string variables together, use the dot (.) operator.

$string1="Hello World";
echo $string1 . " " . $string2;

This will produce following result −

Hello World 1234

The PHP $_REQUEST variable contains the contents of both $_GET, $_POST, and $_COOKIE. We will discuss $_COOKIE variable when we will explain about cookies. The PHP $_REQUEST variable can be used to get the result from form data sent with both the GET and POST methods.

There are two PHP functions which can be used to included one PHP file into another PHP file.

  • The include() Function

  • The require() Function

If there is any problem in loading a file then the require() function generates a fatal error and halt the execution of the script whereas include() function generates a warning but the script will continue execution.

The PHP fopen() function is used to open a file. It requires two arguments stating first the file name and then mode in which to operate. "r" mode opens the file for reading only and places the file pointer at the beginning of the file.

Once a file is opened using fopen() function it can be read with a function called fread(). This function requires two arguments. These must be the file pointer and the length of the file expressed in bytes.

The files's length can be found using the filesize() function which takes the file name as its argument and returns the size of the file expressed in bytes.

File's existence can be confirmed using file_exist() function which takes file name as an argument.

Yes! You can set a parameter to have a default value if the function's caller doesn't pass it.

PHP provided setcookie() function to set a cookie. This function requires upto six arguments and should be called before <html> tag. For each cookie this function has to be called separately.

setcookie(name, value, expire, path, domain, security);

PHP provides many ways to access cookies. Simplest way is to use either $_COOKIE or $HTTP_COOKIE_VARS variables.

You can use isset() function to check if a cookie is set or not.

To delete a cookie you should call setcookie() with the name argument only.

A PHP session is easily started by making a call to the session_start() function.This function first checks if a session is already started and if none is started then it starts one. It is recommended to put the call to session_start() at the beginning of the page.

Session variables are stored in associative array called $_SESSION[]. These variables can be accessed during lifetime of a session.

Make use of isset() function to check if session variable is already set or not.

Here is the example to unset a single variable −


A PHP session can be destroyed by session_destroy() function.

PHP makes use of mail() function to send an email. This function requires three mandatory arguments that specify the recipient's email address, the subject of the the message and the actual message additionally there are other two optional parameters.

mail( to, subject, message, headers, parameters );

This is a global PHP variable. This variable is an associate double dimension array and keeps all the information related to uploaded file.

Using $_FILES['file']['tmp_name'] − it provides access to the uploaded file in the temporary directory on the web server.

Using $_FILES['file']['name'] − it provides the actual name of the uploaded file.

Using $_FILES['file']['size'] − it provides the size in bytes of the uploaded file.

Using $_FILES['file']['type'] − it provides the MIME type of the uploaded file.

Using $_FILES['file']['error'] − it provides the error code associated with this file upload.

$GLOBALS − Contains a reference to every variable which is currently available within the global scope of the script. The keys of this array are the names of the global variables.

$_SERVER − This is an array containing information such as headers, paths, and script locations. The entries in this array are created by the web server. There is no guarantee that every web server will provide any of these. See next section for a complete list of all the SERVER variables.

$_COOKIE − An associative array of variables passed to the current script via HTTP cookies.

$_SESSION − An associative array containing session variables available to the current script.

$_PHP_SELF − A string containing PHP script file name in which it is called.

$php_errormsg − $php_errormsg is a variable containing the text of the last error message generated by PHP.

ereg() − The ereg() function searches a string specified by string for a string specified by pattern, returning true if the pattern is found, and false otherwise.

eregi() − The eregi() function searches throughout a string specified by pattern for a string specified by string. The search is not case sensitive.

The split() function will divide a string into various elements, the boundaries of each element based on the occurrence of pattern in string.

preg_match() - The preg_match() function searches string for pattern, returning true if pattern exists, and false otherwise.

The preg_split() function operates exactly like split(), except that regular expressions are accepted as input parameters for pattern.

Using getMessage() method of Exception class which returns the message of exception.

Using getCode() method of Exception class which returns the code of exception.

Using getFile() method of Exception class which returns source filename.

Using getLine() method of Exception class which returns source line.

Using getTrace() method of Exception class which returns array of the backtrace.

Using getTraceAsString() method of Exception class which returns formated string of trace.

PHP's time() function gives you all the information that you need about the current date and time. It requires no arguments but returns an integer.

The function getdate() optionally accepts a time stamp and returns an associative array containing information about the date. If you omit the time stamp, it works with the current time stamp as returned by time().

The date() function returns a formatted string representing a date. You can exercise an enormous amount of control over the format that date() returns with a string argument that you must pass to it.

PHP provides mysql_connect function to open a database connection.

connection mysql_connect(server,user,passwd,new_link,client_flag);

PHP uses mysql_query function to create a MySQL database. This function takes two parameters and returns TRUE on success or FALSE on failure.

bool mysql_query( sql, connection );

Its simplest function mysql_close PHP provides to close a database connection. This function takes connection resource returned by mysql_connect function. It returns TRUE on success or FALSE on failure.

bool mysql_close ( resource $link_identifier );

If a resource is not specified then last opend database is closed.

PHP 5's new SimpleXML module makes parsing an XML document, well, simple. It turns an XML document into an object that provides structured access to the XML. To create a SimpleXML object from an XML document stored in a string, pass the string to simplexml_load_string( ). It returns a SimpleXML object.


PHP provides a special function called __construct() to define a constructor. You can pass as many as arguments you like into the constructor function.

Like a constructor function you can define a destructor function using function __destruct(). You can release all the resourceses with-in a destructor.

The variable $this is a special variable and it refers to the same object ie. itself.

Once you defined your class, then you can create as many objects as you like of that class type. Following is an example of how to create object using new operator.

$physics = new Books;
$maths = new Books;
$chemistry = new Books;

After creating your objects, you will be able to call member functions related to that object. One member function will be able to process member variable of related object only. Following example shows how to set title and prices for the three books by calling member functions.

$physics−>setTitle( "Physics for High School" );
$chemistry−>setTitle( "Advanced Chemistry" );
$maths−>setTitle( "Algebra" );
$physics−>setPrice( 10 );
$chemistry−>setPrice( 15 );
$maths−>setPrice( 7 );

Function definitions in child classes override definitions with the same name in parent classes. In a child class, we can modify the definition of a function inherited from parent class.

Interfaces are defined to provide a common function names to the implementors. Different implementors can implement those interfaces according to their requirements. You can say, interfaces are skeltons which are implemented by developers.

PHP 5 introduces the final keyword, which prevents child classes from overriding a method by prefixing the definition with final. If the class itself is being defined final then it cannot be extended.

What is Next?

Further you can go through your past assignments you have done with the subject and make sure you are able to speak confidently on them. If you are fresher then interviewer does not expect you will answer very complex questions, rather you have to make your basics concepts very strong.

Second it really doesn't matter much if you could not answer few questions but it matters that whatever you answered, you must have answered with confidence. So just feel confident during your interview. We at tutorialspoint wish you best luck to have a good interviewer and all the very best for your future endeavor. Cheers :-)