Top 100 questions for PHP interview with answers to help you in preparing for job interviews. PHP is a very popular general-purpose server-side programming language used for the website’s backend development. PHP has many popular frameworks like Laravel, Code Ignitor, CakePHP and CMS like WordPress. Due to a big range of PHP frameworks and CMS, there is a large number of companies who offer jobs to PHP developers for development and maintenance of their PHP applications.
Table of Contents
We have selected 100+ PHP Interview Questions to help you in preparing for your PHP tests. These are given below:
PHP is a server-side programming language to create websites. Based on scripts, it allows developers to dynamically create web pages.
PHP means PHP: Hypertext Pre-processor.
PHP syntax resembles Perl and C programming languages.
PEAR means “PHP Extension and Application Repository”. It extends PHP and provides a higher level of programming for web developers.
Version 7.1, 7.2, 7.3 and 7.4 are the recommended and stable versions of PHP at the time of writing. However, you may check the current stable version of PHP at https://www.php.net/downloads.php
Just use the PHP command line interface (CLI) and specify the file name of the script to be executed as follows:
php script.php
Just use the PHP CLI program with the option -a as follows:
php -a
The two most common ways to start and finish a PHP script are:
<?php [ --- PHP code---- ] ?> and <? [--- PHP code ---] ?>
To be able to display the output directly to the browser, we have to use the special tags
<?= and ?>
PHP 5 presents many additional OOP (Object Oriented Programming) features.
PHP supports only single inheritance; it means that a class can be extended from only one single class using the keyword ‘extended’.
‘final’ is introduced in PHP5. Final class means that this class cannot be extended and a final method cannot be overridden.
We use the operator ‘==’ to test is two objects are instanced from the same class and have same attributes and equal values. We can test if two objects are referring to the same instance of the same class by the use of the identity operator ‘===’.
It is possible to generate HTML through PHP scripts, and it is possible to pass pieces of information from HTML to PHP.
If we would like to pass values through a form or an URL, then we need to encode and to decode them using htmlspecialchars() and urlencode().
PHP and Javascript cannot directly interact since PHP is a server side language and Javascript is a client-side language. However, we can exchange variables since PHP can generate Javascript code to be executed by the browser and it is possible to pass specific variables back to PHP via the URL.
GD library is needed to execute image functions.
imagetypes() gives the image format and types supported by the current version of GD-PHP.
The functions are getimagesize() for size, imagesx() for width and imagesy() for height.
If the function require() cannot access the file then it ends with a fatal error. However, the include() function gives a warning, and the PHP script continues to execute.
require(), and require_once() perform the same task except that the second function checks if the PHP script is already included or not before executing it.
(same for include_once() and include())
Two methods are possible:
<!--?php echo "Method 1"; print "Method 2"; ?-->
To be able to display a human-readable result we use print_r().
The set_time_limit(0) added at the beginning of a script sets to infinite the time of execution to not have the PHP error ‘maximum execution time exceeded.’ It is also possible to specify this in the php.ini file.
This is a PHP syntax error expressing that a mistake at the line x stops parsing and executing the program.
The most common and used way is to get data into a format supported by Excel. For example, it is possible to write a .csv file, to choose for example comma as a separator between fields and then to open the file with Excel.
file_get_contents() lets reading a file and storing it in a string variable.
To be able to connect to a MySQL database, we must use mysqli_connect() function as follows:
<!--?php $database = mysqli_connect("HOST", "USER_NAME", "PASSWORD"); mysqli_select_db($database,"DATABASE_NAME"); ?-->
mysql_pconnect() ensure a persistent connection to the database, it means that the connection does not close when the PHP script ends.
This function is not supported in PHP 7.0 and above
The result set can be handled using mysqli_fetch_array, mysqli_fetch_assoc, mysqli_fetch_object or mysqli_fetch_row.
The function mysqli_num_rows() returns the number of rows in a result set.
mysqli_affected_rows() return the number of entries affected by an SQL query.
The mysqli_fetch_object() function collects the first single matching record where mysqli_fetch_array() collects all matching records from the table in an array.
To access the data sent via the GET method, we use $_GET array like this:
www.url.com?var=value$variable = $_GET["var"]; this will now contain 'value'
To access the data sent this way, you use the $_POST array.
Imagine you have a form field called ‘var’ on the form when the user clicks submit to the post form, you can then access the value like this:
$_POST["var"];
It is possible to use the dedicated function, is_numeric() to check whether it is a number or not.
It is possible to use the dedicated function, ctype_alnum to check whether it is an alphanumeric value or not.
If we want to check whether a variable has a value or not, it is possible to use the empty() function.
The unlink() function is dedicated for file system handling. It simply deletes the file given as entry.
The unset() function is dedicated for variable management. It will make a variable undefined.
The addslashes function enables us to escape data before storage into the database.
The stripslashes function enables us to remove the escape characters before apostrophes in a string.
We have to enable the Magic quotes entry in the configuration file of PHP.
The function get_magic_quotes_gpc() tells us whether the magic quotes is switched on or no.
The strip_tags() function enables us to clean a string from the HTML tags.
A static variable is defined within a function only the first time, and its value can be modified during function calls as follows:
<!--?php
function testFunction() {
static $testVariable = 1;
echo $testVariable;
$testVariable++;
} testFunction();
//1 testFunction();
//2 testFunction();
//3 ?-->
This feature is possible using the global keyword.
A function returns a value using the instruction ‘return $value;’.
It is preferable to use crypt() which natively supports several hashing algorithms or the function hash() which supports more variants than crypt() rather than using the common hashing algorithms such as md5, sha1 or sha256 because they are conceived to be fast. Hence, hashing passwords with these algorithms can create vulnerability.
The PHP-OpenSSL extension provides several cryptographic operations including generation and verification of digital signatures.
The define() directive lets us defining a constant as follows:
define ("ACONSTANT", 123);
To be able to pass a variable by reference, we use an ampersand in front of it, as follows $var1 = &$var2
“13” and 12 can be compared in PHP since it casts everything to the integer type.
The name of the output type has to be specified in parentheses before the variable which is to be cast as follows:
* (int), (integer) – cast to integer
* (bool), (boolean) – cast to boolean
* (float), (double), (real) – cast to float
* (string) – cast to string
* (array) – cast to array
* (object) – cast to object
When the original if was followed by: and then the code block without braces.
It is composed of three expressions: a condition, and two operands describing what instruction should be performed when the specified condition is true or false as follows:
Expression_1?Expression_2 : Expression_3;
The function func_num_args() is used to give the number of parameters passed into a function.
$$var2 contains the value 10.
:: is used to access static methods that do not require object initialization.
In PHP, objects passed by value.
No, a parent constructor have to be called explicitly as follows:
parent::constructor($value)
__sleep returns the array of all the variables that need to be saved, while __wakeup retrieves them.
Combining two variables as follows:
$variable1 = 'Hello ';
$variable2 = 'World';
$variable3 = $variable1.$variable2;
Or
$variable3 = "$variable1$variable2";
$variable3 will contain “Hello World”. The first code is faster than the second code especially for large large sets of data.
A session is a logical object enabling us to preserve temporary data across multiple PHP pages.
The use of the function session_start() lets us activating a session.
You can propagate a session id via cookies or URL parameters.
A persistent cookie is permanently stored in a cookie file on the browser’s computer. By default, cookies are temporary and are erased if we close the browser.
Sessions automatically end when the PHP script finishes executing but can be manually ended using the session_write_close().
The session_unregister() function unregister a global variable from the current session and the session_unset() function frees all session variables.
$GLOBALS is associative array including references to all variables which are currently defined in the global scope of the script.
$_SERVER is an array including information created by the web server such as paths, headers, and script locations.
$_FILES is an associative array composed of items sent to the current script via the HTTP POST method.
$_FILES[‘userfile’][‘name’] represents the original name of the file on the client machine,
$_FILES[‘userfile’][‘tmp_name’] represents the temporary filename of the file stored on the server.
$_FILES[‘userfile’][‘error’] contains the error code associated with the uploaded file.
We can change the maximum size of files to be uploaded by changing upload_max_filesize in php.ini.
$_ENV is an associative array of variables sent to the current PHP script via the environment method.
$_COOKIE is an associative array of variables sent to the current PHP script using the HTTP Cookies.
The scope of a variable is the context within which it is defined. For the most part, all PHP variables only have a single scope. This single scope spans included and required files as well.
$a and $b: TRUE if both $a and $b are TRUE.
$a & $b: Bits that are set in both $a and $b are set.
The first is the concatenation operator (‘.’), which returns the concatenation of its right and left arguments. The second is (‘.=’), which appends the argument on the right to the argument on the left.
$a === $b TRUE if $a and $b have the same key/value pairs in the same order and of the same types.
!= means inequality (TRUE if $a is not equal to $b) and !== means non-identity (TRUE if $a is not identical to $b).
To be able to verify whether a PHP variable is an instantiated object of a certain class we use instanceof.
The goto statement can be placed to enable jumping inside the PHP program. The target is pointed by a label followed by a colon, and the instruction is specified as a goto statement followed by the desired target label.
Exception::getMessage lets us getting the Exception message and Exception::getLine lets us getting the line in which the exception occurred.
Exception::__toString gives the String representation of the exception.
The function parse_ini_file() enables us to load in the ini file specified in filename and returns the settings in it in an associative array.
The boolean function isset determines if a variable is set and is not NULL.
The string function strstr(string allString, string occ) returns part of allString from the first occurrence of occ to the end of allString. This function is case-sensitive. stristr() is identical to strstr() except that it is case insensitive.
for is expressed as follows:
for (expr1; expr2; expr3)
statement
The first expression is executed once at the beginning. In each iteration, expr2 is evaluated. If it is TRUE, the loop continues, and the statements inside for are executed. If it evaluates to FALSE, the execution of the loop ends. expr3 is tested at the end of each iteration.
However, foreach provides an easy way to iterate over arrays, and it is only used with arrays and objects.
It is possible to use the document.form.submit() function to submit the form. For example:
<input type=button value="SUBMIT" onClick="document.form.submit()">
The function eregi_replace() is identical to the function ereg_replace() except that it ignores case distinction when matching alphabetic characters.
Yes, we use the urlencode() function to be able to protect special characters.
The three basic classes of errors are notices (non-critical), warnings (serious errors) and fatal errors (critical errors).
\034 is octal 34 and \x34 is hex 34.
It is possible to pass the variables between the PHP pages using sessions, cookies or hidden form fields.
The use of the set_time_limit(int seconds) enables us to extend the execution time of a PHP script. The default limit is 30 seconds.
Yes, it is possible by setting the cookie with a past expiration time.
The default session time in php is until the closing of the browser.
Yes, it’s possible to integrate (Distributed) Component Object Model components ((D)COM) in PHP scripts which is provided as a framework.
Yes, it is possible to share a single instance of Memcache between multiple projects. Memcache is a memory store space, and you can run memcache on one or more servers. You can also configure your client to speak to a particular set of instances. So, you can run two different Memcache processes on the same host and yet they are completely independent. Unless, if you have partitioned your data, then it becomes necessary to know from which instance to get the data from or to put into.
When PHP changes you can update Memcached by
NGINX Server Nginx, a popular open-source web server, excels at handling high traffic websites efficiently.… Read More
In the realm of web hosting, choosing the right web server is paramount. It acts… Read More
Are indispensable for ensuring smooth, precise linear motion in many industrial applications. Whether in robotics,… Read More
Cyber attacks are becoming more frequent, complex, and damaging. They can disrupt critical operations and… Read More
With the rise of new threats and the increasing complexity of IT environments, organizations need… Read More
1. Introduction In software design, managing complex systems can be challenging. The Facade Design Pattern… Read More
View Comments
In most of the interviews, they also ask for difference between require and require_once.