PHP Interview Questions and Answers


PHP is a server-side scripting language designed for web development but also used as a general-purpose programming language. PHP is now installed on more than 244 million websites and 2.1 million web servers.[2] Originally created by Rasmus Lerdorf in 1995, the reference implementation of PHP is now produced by The PHP Group.[3] While PHP originally stood for Personal Home Page, it now stands for PHP: Hypertext Preprocessor, a recursive acronym.[4]
PHP code is interpreted by a web server with a PHP processor module which generates the resulting web page: PHP commands can be embedded directly into an HTML source document rather than calling an external file to process data. It has also evolved to include a command-line interface capability and can be used in standalone graphical applications. from: wikipedia

Following are the common questions asked in Interview with answers.

What is PHP?

PHP (Hyper text Pre Processor) is a scripting language commonly used for web applications. PHP can be easily embedded in HTML. PHP generally runs on a web server. It is available for free and can be used across a variety of servers, operating systems and platforms.

What Is a Session in PHP?

A PHP session is no different from a normal session. It can be used to store information on the server for future use. However this storage is temporary and is flushed out when the site is closed. Sessions can start by first creating a session id (unique) for each user.

Syntax : session_start()

E.g. storing a customer’s information.

Explain the difference between $message and $$message.

$message is used to store variable data. $$message can be used to store variable of a variable. Data stored in $message is fixed while data stored in $$message can be changed dynamically.

E.g. $var1 = ‘Variable 1’

$$var1= ‘variable2’

This can be interpreted as $ Variable 1=‘variable2’;

For me to print value of both variables, I will write

$var1 $($var1)

What Is a Persistent Cookie?

Cookies are used to remember the users. Content of a Persistent cookie remains unchanged even when the browser is closed. ‘Remember me’ generally used for login is the best example for Persistent Cookie.

Explain the differences between require and include, include_once.

Include () will include the file specified.

Include_once () will include the file only once even if the code of the file has been included before.

Require () and include () are the same with respect to handling failures. However, require () results in a fatal error and does not allow the processing of the page.

What are the functions for IMAP?

IMAP is used for communicate with mail servers. It has a number of functions. Few of them are listed below:

Imap_alerts – Returns all the imap errors occurred

Imap_body – Reads the message body

Imap_check – Reads the current mail box

Imap_clearflag_full – Clears all flags

Imap_close – close and IMAP stream

Imap_delete – Delete message from current mailbox

Imap_delete_mailbox – Deletes a mailbox

Imap_fetchbody – Fetches body of message

Imap_fetchheader – Fetches header of message

Imap_headers – Returns headers for ALL messages

Imap_mail : send a mail

Imap_sort- Sorts imap messages

How can we increase the execution time of a php script?

Default time allowed for the PHP scripts to execute is 30s defined in the php.ini file. The function used is set_time_limit(int seconds). If the value passed is ‘0’, it takes unlimited time. It should be noted that if the default timer is set to 30 sec and 20 sec is specified in set_time_limit(), the script will run for 45 secs.

How to set cookies in PHP?

Cookies are often used to track user information.

Cookies can be set in PHP using the setcookie() function.

Parameters are : name of the cookie, Value of cookie, time for expiry of cookie, path of the cookies location on server, domain, secure (TRUE or FALSE) indication whether the cookie is passed over a secure HTTPS, http only (TRUE) which will make the cookie accessible only through HTTP.

Returns TRUE or FALSE depending on whether the cookie was executed or not.

What is Type juggle in php?

Type Juggling means dealing with a variable type. In PHP a variables type is determined by the context in which it is used. If an integer value is assigned to a variable, it becomes an integer.

E.g. $var3= $var1 + $var2

Here, if $var1 is an integer. $var2 and $var3 will also be treated as integers.
Explain the difference between include and require.

Require () and include () are the same with respect to handling failures. However, require () results in a fatal error and does not allow the processing of the page. i.e. include will allow the script to continue.

What does a special set of tags <?= and ?> do in PHP?

The output is displayed directly to the browser.

What’s the difference between include and require?

 It’s how they handle failures. If the file is not found by require(), it will cause a fatal error and halt the execution of the script. If the file is not found by include(), a warning will be issued, but execution will continue.

I am trying to assign a variable the value of 0123, but it keeps coming up with a different number, what’s the problem?

PHP Interpreter treats numbers beginning with 0 as octal. Look at the similar PHP interview questions for more numeric problems.

Would I use print “$a dollars” or “{$a} dollars” to print out the amount of dollars in this example?

In this example it wouldn’t matter, since the variable is all by itself, but if you were to print something like “{$a},000,000 mln dollars”, then you definitely need to use the braces.


How do you define a constant?

Via define() directive, like define (“MYCONSTANT”, 100);

How do you pass a variable by value?

Just like in C++, put an ampersand in front of it, like $a = &$b

Will comparison of string “10” and integer 11 work in PHP? 

Yes, internally PHP will cast everything to the integer type, so numbers 10 and 11 will be compared.

What is urlencode and urldecode?

Urlencode can be used to encode a string that can be used in a url. It encodes the same way posted data from web page is encoded. It returns the encoded string.

Syntax: urlencode (string $str )

Urldecode can be used to decode a string. Decodes any %## encoding in the given string (Inserted by urlencode)

Syntax: urldecode (string $str )

When are you supposed to use endif to end the conditional statement?

When the original if was followed by : and then the code block without braces.

Explain the ternary conditional operator in PHP?

Expression preceding the ? is evaluated, if it’s true, then the expression preceding the : is executed, otherwise, the expression following : is executed.

How do I find out the number of parameters passed into function?

func_num_args() function returns the number of parameters passed in.

If the variable $a is equal to 5 and variable $b is equal to character a, what’s the value of $$b?

100, it’s a reference to existing variable.

What’s the difference between accessing a class method via -> and via ::?

:: is allowed to access methods that can perform static operations, i.e. those, which do not require object initialization.

Are objects passed by value or by reference?

Everything is passed by value.

How do you call a constructor for a parent class?


What’s the special meaning of __sleep and __wakeup?

__sleep returns the array of all the variables than need to be saved, while __wakeup retrieves them.

Why doesn’t the following code print the newline properly?

            $str = ‘Hello, there.n How are you?n Thanks for visiting’;
            print $str;

Because inside the single quotes the n character is not interpreted as newline, just as a sequence of two characters – and n.

Would you initialize your strings with single quotes or double quotes?

Since the data inside the single-quoted string is not parsed for variable substitution, it’s always a better idea speed-wise to initialize a string with single quotes, unless you specifically need variable substitution.

How come the code <?php print “Contents: $arr[1]”; ?> works, but <?php print “Contents: $arr[1][2]”; ?> doesn’t for two-dimensional array of mine?

Any time you have an array with more than one dimension, complex parsing syntax is required. print “Contents: {$arr[1][2]}” would’ve worked.

What is the difference between characters 23 and x23?

The first one is octal 23, the second is hex 23.

With a heredoc syntax, do I get variable substitution inside the heredoc contents? – Yes.

I want to combine two variables together:

[code]$var1 = ‘Welcome to ‘;
$var2 = ‘’;

What will work faster? Code sample 1:

[code]$var 3 = $var1.$var2;[/code]

Or code sample 2:

[code]$var3 = "$var1$var2";[/code]

Both examples would provide the same result – $var3 equal to “Welcome to”. However, Code Sample 1 will work significantly faster. Try it out with large sets of data (or via concatenating small sets a million times or so), and you will see that concatenation works significantly faster than variable substitution.

For printing out strings, there are echo, print and printf. Explain the differences.

echo is the most primitive of them, and just outputs the contents following the construct to the screen. print is also a construct (so parentheses are optional when calling it), but it returns TRUE on successful output and FALSE if it was unable to print out the string. However, you can pass multiple parameters to echo, like:

[code]<?php echo ‘Welcome ‘, ‘to’, ‘ ‘, ‘TIPSnTUTS!’; ?>[/code]

and it will output the string “Welcome to TechInterviews!” print does not take multiple parameters. It is also generally argued that echo is faster, but usually the speed advantage is negligible, and might not be there for future versions of PHP. printf  is a function, not a construct, and allows such advantages as formatted output, but it’s the slowest way to print out data out of echo, print and printf.

I am writing an application in PHP that outputs a printable version of driving directions. It contains some long sentences, and I am a neat freak, and would like to make sure that no line exceeds 50 characters. How do I accomplish that with PHP? – On large strings that need to be formatted according to some length specifications, use wordwrap() or chunk_split().

What’s the output of the ucwords function in this example?


print $formatted;

ucwords() makes every first letter of every word capital, but it does not lower-case anything else. To avoid this, and get a properly formatted string, it’s worth usingstrtolower() first.

What’s the difference between htmlentities() and htmlspecialchars()?

htmlspecialchars only takes care of <, >, single quote ‘, double quote ” and ampersand. htmlentities translates all occurrences of character sequences that have different meaning in HTML.

What’s the difference between md5(), crc32() and sha1() crypto on PHP?

The major difference is the length of the hash generated. CRC32 is, evidently, 32 bits, while sha1() returns a 128 bit value, and md5() returns a 160 bit value. This is important when avoiding collisions.

So if md5() generates the most secure hash, why would you ever use the less secure crc32() and sha1()?

Crypto usage in PHP is simple, but that doesn’t mean it’s free. First off, depending on the data that you’re encrypting, you might have reasons to store a 32-bit value in the database instead of the 160-bit value to save on space. Second, the more secure the crypto is, the longer is the computation time to deliver the hash value. A high volume site might be significantly slowed down, if frequent md5() generation is required.

What are the different types of errors in PHP?

Different types of errors are:

E_ERROR: A fatal error that causes script termination

E_WARNING: Run-time warning that does not cause script termination

E_PARSE: Compile time parse error.

E_NOTICE: Run time notice caused due to error in code

E_CORE_ERROR: Fatal errors that occur during PHP's initial startup (installation)

E_CORE_WARNING: Warnings that occur during PHP's initial startup

E_COMPILE_ERROR: Fatal compile-time errors indication problem with script.

E_USER_ERROR: User-generated error message.

E_USER_WARNING: User-generated warning message.
E_USER_NOTICE: User-generated notice message.

E_STRICT: Run-time notices.

E_RECOVERABLE_ERROR: Catchable fatal error indicating a dangerous error

E_ALL: Catches all errors and warnings

Explain how to submit form without a submit button.

A form data can be posted or submitted without the button in the following ways:

1. On OnClick event of a label in the form, a JavaScript function can be called to submit the form

e.g. document.form_name.submit()

2. Using a Hyperlink: On clicking the link, JavaScript function can be called

e.g <a.href=” javascript:document.MyForm.submit();”>


Please enter your comment!
Please enter your name here