Tuesday, August 23, 2011

PHP. Variables

PHP Variables: The Ultimate Guide
Variables are important in every programming language — and it’s no different in PHP. Variables give developers the possibility of temporarily storing data to be used in PHP scripts (in PHP’s case, this happens in the server’s memory). This guide is all about working with variables in PHP.
By the way, if you are just starting out with PHP, I recommend reading this guide first: Learning PHP: Get Started Using PHP.

Comment, Comment, Comment!

Before we start, I’d like to introduce you to PHP comments. As a developer, you should try to comment your code in such a way that your code logic is explained well; this is one of the good habits coders should have.
PHP Variables: The Ultimate GuideWithout even looking at the PHP code, you know what this function is capable of just by reading the comments (in green).

How Does Commenting Work?

One way of placing a comment in one line is achieved by having two forward slashes (//) preceding the comment.
<?php
// This is a comment
echo 'Hello World!'; //This is another comment
?>
Another way to make comments is through a comment block which is wrapped by /* */. You want to use a comment block when your comment is more than a few lines long.
<?php
/*
By using a comment block, you are
capable of putting comments
on multiple lines.
*/
echo 'Hello World!';
?>
Another way — which is rarely used nowadays — is using a hash symbol (#) in front of the comment.
<?php
echo 'I\'m using comments!'; # An alternative syntax of commenting
?>

PHP and Variables

A PHP variable always starts with a dollar sign ($).This is just to let the PHP parser know that we are dealing with variables. You should always try to give your variables names that are as descriptive as possible.
Alphanumeric characters (i.e. A-Z, a-z, and 0-9) and underscores (_) are allowed, but the name cannot start with a digit. If your variable contains other characters or if it starts with a digit, it will produce a parse error.
<?php
// Valid
$player_name;
// Valid$playerName;
// Valid
$_player_name;
// Not valid - has a space
$player name;
// Not valid - starts with a number
$1st;
// Valid
$player2nd;
?>
A variable name without a dollar sign ($) in front, or a variable name that contains invalid characters will most likely result in a parse error.
PHP aborts the parser on line 4 due to a parse error.

Assigning a Value to a Variable

A variable is useless if you don’t assign data to it! Assigning data to a variable is done like so:
<?php
$player_name = 'Freddy';
?>
We now have a variable called $player_name that contains a string value of "Freddy".

Printing Variables

We can print out a variable’s value using echo.
<?php
$player_name = 'Freddy';
echo $player_name;
?>
If you want to combine a variable with a static string, you can use a period (.) to append your strings together, like so:
<?php
$player_name = 'Freddy';
// Prints out "Hello Freddy!"
echo 'Hello ' . $player_name . '!';
?>
Alternatively, you can use quotes, which parses the string for the variable.
<?php
$player_name = 'Freddy';

// Prints out 'Hello Freddy'!
echo "Hello $player_name!";
// Prints out 'Hello $player_name!' because it uses single quotes
// thus $player_name is treated as a literal string
echo 'Hello $player_name!';
?>
Here are a few more examples of printing out variables, just to hammer in the concept.
<?php
$player_name = 'Freddy';
$player_friend = 'Tim';

// Prints out 'Hello Freddy! Is Tim still your friend?'
echo 'Hello ' . $player_name . '! Is ' . $player_friend . ' still your friend?';

$color = 'Blue';
$animal = 'Lion';
$text = 'I saw a ' . $color . ' ' . $animal . ' today when I was walking with '
         . $player_friend . ' and ' . $player_name;

// Prints out 'I saw a Blue Lion today when I was walking with Tim and Freddy'.
echo $text;
?>

About PHP Data Types

In most programming languages, the data type of a variable can only be defined once. In PHP, this is not the case. If you are working with PHP, you can’t define the type of a variable. It’s defined implicitly, which means that the data type will automatically be set for you depending on the type of data you assign the variable. This might sound confusing now, but later on, it will make sense, so just bear with me.

Null Data Type

The data type null refers to "nothing". Every variable that has no value assigned to it will be a variable of the type null. Null is exactly 0 bytes. Assigning null to a variable will delete the contents of that variable from memory.
<?php
// A variable without any value assigned to it, equals null
$player_name;
// Now $player_name is no longer null
$player_name = 'Freddy';
// $player_name is null again, and the string 'Freddy' has
// been deleted from memory
$player_name = null;
// $player_name is not null again
$player_name = 'Freddy';

// unset() is a PHP function that is the same as doing $player_name = null;
unset($player_name);
?>

Data Type Switching

Did you see what we just did up there? We jumped from a null data type to a string data type and then, all of a sudden, the variable was null again. No magic or hocus pocus involved, promise!
PHP is loosely typed, which means a variable is not restricted to just one data type. This means that you’re allowed to switch any variable between all the available data types without having to do anything. This is also referred to as type juggling.
However, I must note that type switching is expensive in resources — and can introduce potential points of logic errors in your scripts — and thus you should always try to keep your variables restricted to one data type if possible.
Use type juggling only when you really need to.

Bool Data Type

Bool is short for Boolean. It’s the smallest data type. A Boolean can only be one of two values: true or false.
<?php
$new_items = true; // There are new items available...
$has_permission = false; // Too bad you don't have the permission to read them!
?>
Note: Null, true, and false are words that should not be used in a variable assignment with apostrophes if you want to keep their functionality. See the code block below for clarification.
<?php

$new_items = true;

// This is not a Boolean! Just a string.
$has_permission = 'false';

// The $new_items variable doesn't exist now
$new_items = null;

// The $has_permission variable still exists, only the value has been changed
// from 'false' to the string value of 'null'
$has_permission = 'null';
?>

About var_dump()

It’s time to talk about the var_dump() PHP function for a second, as it will help you greatly in debugging and learning more about your variables. This function shows you details about your variables, including what the contents of your variables are.
var_dump() is a function that will accept any expression. After processing the expression(s), the outcome and additional information about the result of the expression will be printed on the screen.
To keep things readable, it’s a good idea to always wrap a call to var_dump() between the <pre> HTML tag. This is not needed, but something that does improve readability of the output.
Tip: Passing multiple parameters to a function is done by separating them with a comma (,).
<?php
echo '<pre>';

$new_items = true;
// This is a string spelling the word 'false', it's not being treated
// as a Boolean
$has_permission = 'false';

// Make a call to var_dump() with the two variables above as the parameters
var_dump($new_items, $has_permission);

echo '<br>';
$new_items = null;
// This is a string spelling the word 'null', it's not being processed
// as the data type null

$has_permission = 'null';

// We've changed the variables, so let's do a check again
var_dump($new_items, $has_permission);

echo '</pre>';
?>
The following image shows a screenshot of the output of var_dump(). Notice that it tells you the data type, the size and the value of both variables. For example, $has_permission = 'false'; results in a var_dump of string(5) "false", which means that it is a string data type, that there are 5 characters, and that the string value is ‘false’.
Just like we expected.
As you can see, var_dump() is a very useful function. In the context of this PHP guide, it serves perfectly well to find out how type juggling works — but you’ll find it to be a great tool for debugging your PHP scripts.

Int Data Type

An int, which is short for integer, is simply a number. The maximum size of an integer is platform-dependent (meaning it depends on your web server’s operating system and settings), although a maximum value of about 2 billion is typical. If the server is a 64-bit platform, the maximum value is around 9e18.
Integers are always used to store numeric values. Because they are numeric, you can perform mathematical operations on them.
<?php
$number = 10;
// Take the current value and multiply by 10. $number is now 100.
$number = $number * 10;
// Same as above, but shorter. Now, $number is 1000.
$number *= 10;
// Add 5 to $number. $number is now 1005.
$number += 5;
// Same operation as above, just different syntax. $number is now 1010.
$number = $number + 5;
//Subtract 5. We are back at 1005.
$number -= 5;
// Subtract 5 again. We are now at 1000.
$number = $number - 5;
// Prints out 1000
echo $number;
// Still 100, we can assign the value using scientific notation
$number = 1e3;
// You are allowed to use binary. This equal to 37377 in decimal system.
$number = 0111001;
// An octal (equals 2 in decimal system)
$number = 0287;
// Negative numbers are allowed
$number = -2;
// Hexadecimal value (this is equal to 546 in decimal system)
$number = 0x222;
?>

Float Data Type

Unlike integers, which have to be whole numbers, floating points can have decimals such as 12.3 or 6051.32179.
Examine and test the following code block to see how float variables work:
<?php
echo '<pre>';
$number = 10;
var_dump($number);
echo '<br />';
// Divide 10 by 6.
$number /= 6;
var_dump($number);
echo '</pre>';
?>
Our integer switched to a float data type by dividing it by 6.
A float has more precision than an integer but requires more storage space than an integer. The maximum size of a float is (just like an integer) platform-dependent. The maximum value is typically 1.8e308.

Floating Point Imprecision

The binary system (i.e. 1′s and 0′s), was not build for floating point numbers. That’s why simple decimal fractions like 0.4 and 0.8 cannot be converted to their binary counterparts without a small loss of precision. Keep this in mind when you are developing a web application that has to deal with a lot of floating point numbers.

String Data Type

If there’s one data type that you should already be familiar with, it’s the string because you’ve already seen it in action earlier. The string data type is the biggest data type PHP knows. The maximum size equals the size of the server’s memory. You should always take care that this size should not be exceeded (which is hard to do unless you’re intentionally trying to exceed it — but still, you should watch out).
We already covered combining regular text strings with variables and you also know what the difference is between using an apsotrophe (e.g. ‘string’) versus a quote (e.g. "string"), which was covered in the Learning PHP: Get Started Using PHP guide.
What we haven’t talked about are escaped characters. Remember how we took care of our indentation with \n and \t in the "Getting Started" guide? These are called linefeeds and they are categorized as escaped characters.
Read, analyze, and test the following code block to understand escaped characters in string variables. Also, check out this table to see a list of escaped characters in PHP.
<?php
echo "\tYou know what the output will be of this string.";

echo "\n\rThe special character '\\r' is new though.";

echo "\n'\\t' equals a horizontal tab, but '\\v' will result in a vertical tab.";

echo "\n'\\f' will output a form feed.";

echo "\nWhat if you want to use a regular dollar-sign (\$) in a string? We escape it! Like this: '\\$'.";

echo "\nSame thing for a double-quote (\"): '\\\"'";
?>

Type Casting

The last thing we’re going to cover in this PHP variables guide is type casting. Type casting is the name of the process in which a specific data type is transformed into another (e.g. switching from a string data type to an integer data type).
A few data types have their own function that takes care of casting other data types. You are able to cast almost every data type to another type by pre-pending the data to be cast by the name of the data type (e.g. (bool) $myString). Wow, that sounds complicated, but read the comments in the following code block and it will all become clearer.
<?php
echo '<pre>';
// Casting null to any other data type will result in the default value for
// that data type (false, 0, 0 and an empty string)

// We start by converting an integer to null. You can replace the integer
// with any other data type.
$number = 15;

// Try using var_dump on $number to see what it comes up with.
$number = (unset) $number;
echo '<p />';

/* bool */
// Any other number besides 0 will be casted to true
$number_a = 0; $number_b = 3;
// false, true
var_dump((bool) $number_a, (bool) $number_b);
echo '<br />';
// When an empty string is casted to a Boolean, the result will be 'false'
$string_a = '';
// This value will also result in 'false', any other string
// will result in 'true'
$string_b = '0';
// This will be casted to 'true'
$string_c = 'Hello World!';
// false, false, true
var_dump((bool) $string_a, (bool) $string_b, (bool) $string_c);
echo '<p />';

/* int */
// This will result in 1
$bool_a = true;
// ...and this will become 0.
$bool_b = false;
var_dump((int) $bool_a, (int) $bool_b);
echo '<p />';
// Floats casted to integers will lose their decimal precision and if they
// are bigger than an integer, the new integer will be the
// maximal value. If you are casting a string to an int, as much integer data
// as possible will be casted
$string_a = '13 posts';
// Only the first two digits will be used
$string_b =  '45e2 liter';
//13 and 45000
var_dump((int) $string_a, (int) $string_b);

/* float */
// Casting strings and Booleans to a float works the same way as with integers.
// Casting an integer to a float will only change the data type. Nothing else
// will happen

echo '<p />';

/* string */
// Casting a bool to a string will result in '1' on true and '0' on false
// Integers and floats will be converted to their text counterparts
$number = 500;
// Will result in a string contain the characters '500'
var_dump((string) $number);
?>

Conclusion

In this guide, we learned as much as possible about commenting your code, variables, variable types and variable casting. If you have any questions, feel free to pose them in the comments.

12 comments:

  1. The skills and knowledge acquired at college will provide students with the necessary basis for employment.

    Skincare is a major one that must not be overlooked.
    many people are just interested in making the sale.

    my page; health beauty

    ReplyDelete
  2. Great post. I was checking constantly this blog and I'm impressed!
    Very useful info particularly the last part :) I
    care for such information much. I was looking for this certain information for a long time.
    Thank you and good luck.

    My web site: hotel booking

    ReplyDelete
  3. Hey! Would you mind if I share your blog with my twitter group?

    There's a lot of people that I think would really enjoy your
    content. Please let me know. Many thanks

    Feel free to surf to my page fast muscle
    recovery foods ()

    ReplyDelete
  4. Amazing! Its truly remarkable article, I have got much clear idea concerning from
    this post.

    Also visit my webpage ... free download movie

    ReplyDelete
  5. I was curious if you ever thought of changing the layout of your website?
    Its very well written; I love what youve got to say.

    But maybe you could a little more in the way of content so
    people could connect with it better. Youve got an awful lot of text for only having 1
    or two images. Maybe you could space it out better?

    Also visit my web-site; essay writing service reviews

    ReplyDelete
  6. Heyya i am for the primary time here. I found this board and I to find It
    truly useful & it helped me out a lot. I am hoping to provide
    one thing again and aid others such as you aided me.


    My site - free movie streaming sites

    ReplyDelete
  7. Wheen sokme one searches for his essential thing,
    so he/she desires too be available that inn detail, therefore that thing iss mainntained over here.


    Also visit my web-site; oil and gas

    ReplyDelete
  8. I could not refrain from commenting. Perfectly written! You are gifted tarot reader

    my homepage; Free Chat with Gifted Psychics!

    ReplyDelete
  9. Hі there, і read yօur blog fгom time tօ time ɑnd i own a similaг оne and i ѡas just
    curious іf you get a lot of spam comments?
    ӏf so hoow do yoս protect аgainst it, аny plugin or anythіng yߋu can sսggest?
    I get so much latelу it's driving me mad ѕo аny assistance is ery much appreciated.


    Here iѕ my web page: blogger.com

    ReplyDelete
  10. I do not even know how I ended up here, but I
    thought this post was good. I don't know who you are but
    certainly you are going to a famous blogger if you aren't already ;) Cheers!


    my website ... website ()

    ReplyDelete
  11. Hi there would you mind letting me know which
    webhost you're working with? I've loaded your blog in 3 completely different web page () browsers
    and I must say this blog loads a lot quicker then most.
    Can you recommend a good internet hosting provider at a honest price?

    Many thanks, I appreciate it!

    ReplyDelete
  12. Hey! I know this is somewhat off topic but I was wondering if you knew where I could locate a captcha plugin for my comment form?

    I'm using the same blog platform as yours and I'm having difficulty finding one?
    Thanks a lot!

    My web page; website ()

    ReplyDelete

Thank you for your Comment....

Popular Posts