Home / 2015 / May

Monthly Archives: May 2015

পিএইচপি অ্যারে

পিএইচপি অ্যারে

  • একটা ভেরিয়েবল একটা single value এর পাত্র(container).কিন্তু অ্যারে একাধিক value’র container বা পাত্র।
  • একটা অ্যারে হল কিছু উপাদান নিয়ে গঠিত যেখানে প্রত্যেকটি উপাদানের নির্দিষ্ট value আছে-key বা index বলে যেটা দিয়ে উপাদানটিকে রেফার করা হয়।
  • ধরুন আপনার কাছে কিছু শহরের নামের লিস্ট আছে এখন যদি এগুলোকে কোনো single variable এ store করে রাখতে চান তাহলে এমন হবে-

    $city1= “Dhaka”
    $city2= “Chittagong”
    $city3= “Rajshahi”
    $city4= “Sylet”
    $city5= “Khulna”
    $city6= “Barishal”

  • কিন্তু একটা অ্যারে এসবগুলোকে একটা ভ্যারিয়েবল এ ধরে রাখতে পারে।
  • অ্যারের সাধারন গঠন পদ্ধতি হচ্ছে কিছু উপাদানের ক্রম (series of element) যার উপাদানগুলির index ০ থেকে শুরু হয়ে ক্রমানুসারে বাড়তে থাকবে।
  • বেশ কয়েকভাবে অ্যারে লেখা যায় সবচেয়ে সহজটি হচ্ছে-

    <?php
    
    $city = array("Dhaka", "Chittagong", "Rajshahi","Sylet", "Khulna", "Barishal");
    
    ?>
    

    ব্যাস একটা variable এ সব শহরের নাম store হয়ে গেছে,প্রতিটি শহরের নাম এক একটি উপাদান এবং প্রতিটি উপাদানে একটি index নির্দিষ্ট হয়ে গিয়েছে।
    array’র ১ম উপাদান এর index/key হচ্ছে ০ তাহলে এখানে Dhaka[0], Chittagong[1]… এভাবে বাকিগুলো।
    এখন আপনি যেকোন উপাদান এর index number উল্লেখ করে সে উপাদানটি পেতে পারেন।যেমন

    <?php
    
    Print "$city[3]";
    
    ?>
    

    তবে যদি আমরা চাই তাহলে অ্যারের এই ডিফল্ট ভ্যালু পরিবর্তন করে দিতে পারি,=> এই অপারেটরটি দিয়ে। ধরি আমি চাচ্ছি এই উপরের অ্যারেটির starting index 2 দিয়ে শুরু হোক তাহলে এভাবে লিখতে হবে

    <?php
    
    $city=array(2=>"Dhaka", "Chittagong", "Rajshahi",
    "Sylet", "Khulna", "Barishal", "Barishal");
    
    ?>
    

    এই অপারেটর যেকোন উপাদানের পূর্বে ব্যাবহৃত হতে পারে তার index নির্দিষ্ট করার জন্য।

    অ্যাসোসিয়েটিভ অ্যারে (Associative array)

    এতক্ষনতো পূর্ন সংখ্যার index/key দেখলাম আপনি চাইলে string ও ব্যাবহার করতে পারেন।এটাকেই associative array বলে।যেমন:

    <?php
    
    $ages = array("adnan"=>32, "rezwan"=>30, "refat"=>34);
    
    ?>
    

    মাল্টিডাইমেনশনাল অ্যারে (Multidimensional array)

    এখানে একটা অ্যারের ভিতর প্রতিটি উপাদান একটি অ্যারে হতে পারে আবার এই সব অ্যারের প্রতিটি উপাদানও একটি অ্যারে হতে পারে এবং এভাবে আরও।

    <?php
    
    $continents=array("Asia"=>array("Bangladesh",
    "India","Pakistan"),"Europe"=>array("England",
    "France"),"Africa"=>array("Kenya","Libya","Somalia"));
    
    ?>
    

    আরও মাল্টিডাইমেনশনাল অ্যারে (Multidimensional array others)

    foreach() লুপ

  • foreach লুপ শুধুমাত্র অ্যারে ম্যানিপুলেট করার জন্য তৈরী করা হয়েছে। তাই এই লুপিং সিস্টেম শুধুমাত্র অ্যারের উপরে কাজ করবে।
  • foreach লুপে as শব্দের পরে যে ভেরিয়েবল থাকে (আপনার ইচ্ছেমত এই ভেরিয়েবলের নাম দিতে পারেন) সেই ভেরিয়েবলে অ্যারের এলিমেন্টগুলি একটা একটা করে আসবে।
  • অন্যান্য লুপিং এ আমরা ঠিক করে দেই যে লুপিং কত থেকে শুরু হবে এবং কত পর্যন্ত চলবে।
  • আর এখানে অ্যারের প্রথম এলিমেন্ট থেকে লুপিং শুরু হবে এবং অ্যারের শেষ এলিমেন্ট আসলে তখন লুপিং শেষ হবে।
  • <?php
    
    $city=array("Dhaka", "Chittagong", "Rajshahi",
    
    "Sylet","Khulna", "Barishal", "Barishal");
    
    foreach ($city as $value)
    
    {
    
    echo "$value.<br>";
    
    }
    
    ?> 
    

    Output

    Dhaka
    Chittagong
    Rajshahi
    Sylet
    Khulna
    Barishal
    Barishal

    range() ফাংশন দিয়ে অ্যারে তৈরী করা যায়।যেমন

    <?php
    
    $numeric1 = range(10,15);
    
    //This is similar to
    
    $numeric1 = array(10,11,12,13,14,15);
    
    //array with optional parameter (even array)
    
    
    $numeric2 = range(10,20,2);
    
    //This is similar to
    $numeric2 = array(10,12,14,16,18,20);
    
    
    //array odd
    
    $numeric3 = range(11,21,2);
    
    //This is similar to
    
    $numeric3 = array(11,13,15,17,19,21);
    
    //letter array
    
    $letter = range("C","K");
    
    //This is similar to
    
    $letter = array("C","D","E","F","G","H","I","J","K");
    
    ?>
    

    এভাবে range() ফাংশন দিয়ে অ্যারে লেখার সুবিধা হচ্ছে বড় অ্যারেকে কত ছোট করে লেখা যাচ্ছে কিন্তু কাজ একই অ্যারে চেক করা।

    is_array() ফাংশন দ্বারা একটা ভেরিয়েবল অ্যারে কিনা তা চেক করা যায়।যেমন

    <?php
    
    //letter array
    $letter = range("C","K");
    
    if(is_array($letter)){
     echo "this is an array and its 3rd value is $letter[2]";
    }else{
     echo "this is not an array";
    }
    
    ?>
    

    আউটপুট

    this is an array and its 3rd value is E

    অ্যারে উঠিয়ে দিয়ে কোন স্ট্রিং বা অন্যকিছু বসিয়ে দেখুন আউটপুট আসবে

    this is not an array

    print_r() দিয়ে অ্যারের সব কনটেন্ট দেখা কোড ডিবাগিং এর সময় এটা কাজে লাগে। ধরুন উপরের letter অ্যারেটির সব কনটেন্ট দেখতে চান তাহলে

    print_r($letter);
    

    আউটপুট

    Array ( [0] => C [1] => D [2] => E [3] => F [4] => G [5] => H [6] => K )
    

    পিএইচপি লুপঃ While লুপ, ফর লুপ

    আসলে এককাজ বারবার করতে আমাদের সকলেরই খারাপ লাগে যেমন একই সিল ৫০টা ইনভেলপ এর মধ্যে মারা বা ধরুন একই কথা ১০০টা পেজের মধ্যে লেখা ইত্যাদি।প্রোগ্রামিং এ মজার ব্যাপারটা হচ্ছে একটু চিন্তা করলেই এইসব পূনরাবৃত্তির কাজ কয়েক লাইন লিখেই করা যায়।লুপ দিয়ে এগুলো করা যায়।

    লুপ হচ্ছে এমন একটা statement যেটা দিয়ে একটা কোডের ব্লক কে নির্দিষ্ট কয়েকবার execute করা যায় যতক্ষন না আমাদের কাজটা শেষ হয়।

    ৪ ধরনের লুপ আছে-

  • While Loop
  • Do…while Loop
  • For Loop
  • Foreach Loop
  • পিএইচপি While লুপ

    যখন একটা condition true হয় তখন while লুপ টি একটা কোড ব্লক কে execute করে।

    সংকেত

    while (condition)
    {
    code to be executed;
    }
    

    যদি condition false হয় তখন ব্রাকেটের ভিতর কোডটি এড়িয়ে যায়।যখন শেষের ব্রাকেটটি আসবে তখন condition আবার চেক করবে,true হলে কোড আবার execute করবে।condition এ যতবার দেয়া আছে ততবার এভাবে চলবেই।যেমন:

    <html>
    <body>
    <?php
    $i=1;
    while($i<=5)
    {
    echo "The number is " . $i . "<br />";
     $i++;
    }
    ?>
    </body>
    </html>
    

    প্রথমে i=1. এরপর while($i<=5) অর্থ্যাৎ লুপটি ততক্ষন চলবে যতক্ষন I এর মান ৫ থেকে ছোট বা সমান হবে।আর লুপটি প্রতিবার ১ করে বাড়বে।কোডটি রান করলে আউটপুট আসবে এমন- The number is 1 The number is 2 The number is 3 The number is 4 The number is 5 এবার এর মান ৬ দিলে কি আউটপুট আসবে? কিছুই আসবেনা কারন তখন এটি while loop এর সাথে মিলবেনা তাই কোড execute হবেনা। Do…while loop

    এটা while loop এর মতই শুধু পার্থক্য এটুকু যে condition টি শেষে test করা হয়,শুরুতে করার পরিবর্তে,যেটা হয় while লুপ এ। অর্থাৎ কমপক্ষে একবার লুপ টি execute হবেই।

    সংকেত

    Do
    {
    Code to be executed
    }
    While(condition);
    

    যেমন নিচের উদাহরনটির কোডটিও উপরের মত একই আউটপুট দেবে শুধু কাজ করবে ভিন্নভাবে।

    <?php
    $i=1;
    do
    {
    $i++;
    echo "The number is " . $i . "<br />";
    }
    while ($i<=5);
    ?>
    

    কিন্তু এখানে যদি i=6 দেই তাহলে কি হবে?নিচের মত
    This is line 6
    This line is outside while loop.so it will not repeat.
    দেখুন লুপ টি প্রথমবার চেকিং ছাড়াই একবার কোড execute হয়েছে।প্রথমবার execution এর পর চেক করেছে যে লুপটি repeat হবে কিনা?কিন্তু while loop এ প্রথমবারই এই চেক হয়।

    ফর লুপ

    এই লুপ টি একটু জটিল।ফর লুপ এর কাজ while লুপ দিয়েও হয়,তবে কিছু সুবিধার কারনে এটি ব্যাহৃত হয়।

    সংকেত

    for (init; condition; increment)
    {
    code to be executed;
    } 
    
  • for loop statement ব্রাকেটের ভিতর ৩টি expression নেয় যেগুলো সেমিক্লোন দ্বারা বিভক্ত হয়।
    ১ম টি assignment statement(loop control variable),প্রথমবার লুপটি পূনরাবৃত্তির আগেই এটা একবার execution হয়।
  • ২য় টি Boolean expression যেটা প্রতিবার পূনরাবৃত্তির আগেই একবার এর মান নির্নীত(evaluate)হয়,এই মান true হলে পূনরাবৃত্তি চলবে আর false return করে তাহলে পূনরাবৃত্তি বন্ধ হয়ে যাবে।
  • ৩য় টি দিয়ে loop control variable এর মান বাড়াতে বা কমাতে ব্যাবহৃত হয়।
  • নিচের উদাহরনটি দেখুন লুপটি শুরু হয়েছে i=1 দিয়ে এবং এটি চলবে যতক্ষন I এর মান ৫ এর চেয়ে ছোট বা সমান হয়।আর I এর মান ১ করে বাড়বে।

    <?php
    for ($i=1; $i<=5; $i++)
    {
    echo "The number is " . $i . "<br />";
    }
    ?>
    

    Output

    The number is 1
    The number is 2
    The number is 3
    The number is 4
    The number is 5

    যেকোন expression ফাকা বা একটিতে একাধিক expression থাকতে পারে,যেগুলো কমা দ্বারা বিভক্ত হবে। যদি Boolean expression ফাকা থাকে তাহলে এর default মান true হয়। এই উদাহরনে সবগুলির আউটপুট ১-১০ হবে।
    আরেকটা লুপ আছে নাম foreach loop এটি array এর সাথে ব্যাবহৃত হয় তাই পরে আসছি।

    পিএইচপি কন্ডিশনাল স্টেটমেন্ট

    কোনো শর্তের উপর কোনো action নেয়ার জন্য কন্ডিশনাল স্টেটমেন্ট ব্যাবহৃত হয়। ধরুন আমি আমার ওয়েবসাইটে এমন একটা feature যোগ করতে চাই যাতে যদি কেউ আমার সাইটে দুপুর ১২ টার আগে ঢুকে তাহলে দেখাবে “Good Morning” আর যদি কেউ বিকেল ৫ টার পর ঢুকে তাহলে দেখাবে “Good evening” এই ধরনের বরং এর চেয়েও মজাদার ও অ্যাডভান্সড কাজগুলো করতে Conditional statement এর দরকার,condition এর উপর ভিত্তি করে পিএইচপি স্বয়ংক্রিয়ভাবে কাজগুলো করতেই থাকে।

    পিএইচপি তে কয়েক ধরনের Conditional statement আছে-

  • if statement
  • if…else statement
  • if…elseif…else statement
  • Switch statement
  • if statement

    if statement টি দিয়ে কিছু কোড execute করা হয় যখন আমাদের দেয়া condition টি true হয়।
    নিচে উদাহরনের আউটপুট হবে Have a nice day যদি ঐ দিন Saturday হয় যেদিন কোডটা লিখে রান করাবেন।

    <?php
    $d=date("D");
    if ($d=="Sat")
    echo "Have a nice Day";
    ?>
    

    if…else statement

    আচ্ছা কখনও তো একথা শুনেছেন যদি পরিশ্রম কর তাহলে ভাল ফল পাবে, কি হবে যদি পরিশ্রম না করেন,ফেইল।এটাই if…else statement এর উদাহরন। এগুলোতো অনেক সময় আমরা বাস্তবেই ব্যাবহার করে থাকি এখন শুধু এটাকে পিএইচপি কোড দিয়ে লিখব।

    <?php
    $d=date("D");
    if ($d=="Sat") echo "Have a nice Day";
    else
    echo “Today is not saturday”;
    ?>
    

    দেখুন condition যেটা দিয়েছি যদি সেটা true হয় অর্থ্যাৎ কোডটা যেদিন রান করাবেন সেদিন যদি Saturday হয় তাহলে আউটপুট হবে Have a nice day আর তা নাহলে Today is not Saturday.

    If…elseif…else statement

    এই statement দ্বারা এক বা একাধিক কোডের ব্লক execute করা যায়।

    <html>
      <body>
    <?php
    if ($number>=60)
      echo "First Division";
    elseif ($number>=45 and $number<60)
      echo “Second Division”;
    elseif($number>=33 and $number<45)
      echo "Third Division";
    else
      echo “Failed”;
    ?>
    </body>
    </html> 
    

    পিএইচপি অপারেটর

    অপারেটরস

    • ভ্যালু বা ভ্যারিয়েবলকে manipulate করতে ব্যাবহৃত হয়।

    ৩ ধরনের অপারেটর আছে ১.Unary – একটা ভ্যালু বা ভ্যারিয়েবলকে(operand) নিয়ে কাজ করে। ২.Binary-দুটি ভ্যালু বা ভ্যারিয়েবলকে নেয়। ৩.Ternary- ৩টি ভ্যালু বা ভ্যারিয়েবলকে নিয়ে থাকে।

    • এর পাশাপাশি আমরা Operator গুলোকে অনেকভাবে শ্রেনীবদ্ধ করতে পারি যেমন-Arithmetic, Assignment, Comparison Operator etc.

    অ্যাসাইনমেন্ট অপারেটর (Assignment Operator) এ অপারেটর গুলো একটা ভ্যালু বা ভ্যারিয়েবলকে অন্য একটা ভ্যালু বা ভ্যারিয়েবলের সমান করতে ব্যাহৃত হয়। $my_var = 4; $another_var = $my_var; এখন $my_var ও $another_var উভয়েরই মান হল ৪.

    <!--?php 
    $addition = 2 + 4;
    $subtraction = 6 - 2;
    $multiplication = 5 * 3;
    $division = 15 / 3;
    $modulus = 5 % 2;
    echo &quot;Perform addition: 2 + 4 = &quot;.$addition.&quot;<br ?-->";
    echo "Perform subtraction: 6 - 2 = ".$subtraction."
    ";
    echo "Perform multiplication:  5 * 3 = ".$multiplication."
    ";
    echo "Perform division: 15 / 3 = ".$division."
    ";
    echo "Perform modulus: 5 % 2 = " . $modulus ?>
    

    সেভ করে রান করান এমন দেখাবে

    Perform addition: 2 + 4 = 6
    Perform subtraction: 6 - 2 = 4
    Perform multiplication: 5 * 3 = 15
    Perform division: 15 / 3 = 5
    Perform modulus: 5 % 2 = 1

     স্ট্রিং অপারেটর (String Operator)

    • এটাতো আগেই আমরা দেখেছি আর ব্যাবহারও করেছি-“”, ‘’
    • Arithmetic এবং Assignment Operator এর Combination
    • Programming এ একটা পরিচিত কাজ হচ্ছে একটা ভ্যারিয়েবলকে নির্দিষ্ট হারে বাড়ানো,যেমন গননার ক্ষেত্রে

    আমি যদি ১ করে বাড়াতে চাই তাহলে $counter=$counter+1; যাহোক সংক্ষেপে এভাবে লেখে $counter+=1; Pre/Post-Increment এবং Pre/Post-Decrement: উপরেরটা একটু অদ্ভুত মনে হতে পারে,এটার আরেকটা সর্টকাট মেথড আছে কোন ভ্যরিয়েবল থেকে ১ করে বাড়ানো বা কমানোর $x++ যেটা $x += 1; অথবা $x = $x + 1 এর সমান। আর কমানোর ক্ষেত্রে শুধু “-” অপারেটরটা ব্যাবহৃত হবে।

    পিএইচপি (PHP) স্ট্রিং

    পিএইচপি স্ট্রিং এতক্ষন ব্যাবহার করলেও গভীর আলোচনা করা হয়নি। পিএইচপি Career এ এই স্ট্রিং একটা গুরত্বপূর্ন ভূমিকা পালন করে। তাই এ ব্যাপারে পরিষ্কার ধারনা থাকা আবশ্যক। স্ট্রিং ব্যাবহারের আগে এটাকে তৈরী করে নিতে হবে। একটা স্ট্রিং সরাসরি একটা ফাংশনে ব্যাবহার হতে পারে অথবা একটা ভ্যারিয়েবলে store থাকতে পারে। নিচে দেখুন একই স্ট্রিং দুবার তৈরী করেছি,একবার ভ্যারিয়েবলে store করা হয়েছে আরেকবার সরাসরি echo করা হয়েছে।

    <?php
    
    $my_string = "o merciful make me bold and brave!";
    echo " o merciful make me bold and brave!";
    echo $my_string;
    ?> 

    উপরের উদাহরনে প্রথম স্ট্রিং কে $my_string ভ্যারিয়েবলে ঢুকিয়ে দেয়া হয়েছে আর দ্বিতীয়বার আরেকটা স্ট্রিং কে echo করা হয়েছে,কোনো ভ্যারিয়েবলে না store করেই। একটা জিনিস মাথায় রাখতে হবে যে যখনই কোন স্ট্রিং কে আমরা একাধিকবার ব্যাবহারের প্লান করব শুধু তখনই এটাকে কোনো ভ্যারিয়েবলে ঢুকিয়ে store করে রাখব।
    আচ্ছা এবার উপরের কোডটুকু লিখে সেভ করে রান করান। ব্রাউজারে নিচের মত আউটপুট পাবেন।

    এতক্ষনতো Double quotes দ্বারা স্ট্রিং তৈরী করা হয়েছে এখন Single quotes দ্বারা স্ট্রিং তৈরী করতে পারেন বরং এটাই ঠিক,তা নাহলে আসলেতো ওটা apostrophes নামে পরিচিত।

    <?php
    $my_string = ‘o merciful make me bold and brave!’;
    echo ‘o merciful make me bold and brave!’;
    echo $my_string;
    ?>
    

    যদি স্ট্রিং এর ভিতর single quotes ব্যাবহার দরকার হয় তাহলে এভাবে করুন- echo ‘PHP it’s neat’ আমরা এখানে আপাতত double quotes ব্যাবহার করব এতে কিছু সুবিধা আছে যেটা single quotes এ নাই। পিএইচপি লেখার যে পদ্ধতিদুটি আলোচনা করা হল এ দুটি সাধারনত সব প্রোগ্রামিং ল্যাংগুয়েজ এর ক্ষেত্রে ব্যাবহৃত হয়,কিন্তু পিএইচপি তে একটা পাওয়ারফুল টুল আছে যেটা দিয়ে বহুলাইনের স্ট্রিং লেখা যায় কোনো quotation ব্যাবহার করা ছাড়াই।সেটা হল heredoc,একটু সতর্কতার সাথে স্ট্রিং কোডিং করতে হবে নাহলে ঝামেলা হবে।নিচে দেখুন কিভাবে এটা করতে হয়-

    এভাবে যদি স্ট্রিং লেখেন তাহলে কয়েকটি জিনিস অবশ্যই খেয়াল রাখতে হবে-

  • <<< বা কিছু identifier আছে যা আপনাকে ব্যাবহার করতে হবে heredoc শুরু করার আগে যেমন আমি TESTব্যাবহার করেছি। শেষেও এটি ব্যাবহার করেছি এবং সেমিক্লোন দিয়ে শেষ হবে।
  • এটা নিজেই একটা লাইন হবে,(indent) ফাকা রেখে লাইনটি শুরু করা যাবেনা।
  • আউটপুট নিচের মত আসবে যেহেতু আমরা
    (লাইনের ব্রেক দেয়ার জন্য ব্যাবহৃত হয়)ট্যাগ স্ট্রিং এর ভিতর ব্যাবহার করিনি।
  • পিএইচপি (PHP) ভেরিয়েবল স্কোপ

    ভেরিয়েবল স্কোপ

    একটা ফাংশনে একটা ভেরিয়েবল থাকতে পারে,নিচের উদাহরনটি দেখুন

    <?php
    $number = 8;
    
    function calculation(){
    $number  = 10;
    
    $anothernumber = 20;
    
    $addnumber  = $number+$anothernumber;
    
    echo $addnumber;
    }
    
    echo "This $number variable from outside of calculation() function and its value is $number";
    
    echo "</br>";
    
    calculation();
    
    ?>
    

    আউটপুট

    This $number variable from outside of calculation() function and its value is 8
    18

  • দেখুন ভেরিয়েবল চিহ্ন $ এর আগে (ব্যাকস্লাশ) চিহ্ন দেয়াতে সেটা ভেরিয়েবল হিসেবে গন্য হয়নি বরং স্ট্রিং এর মত আউটপুট হয়েছে।এটাকে বলে এসকেপ ক্যারেক্টার (escape character)।
  • এখানে ফাংশনের ভিতর $number নামে একটা ভেরিয়েবল আছে এবং ফাংশনের বাইরেও এই একই নামে আরেকটা ভেরিয়েবল আছে ($number = 8;)।
  • ভেরিয়েবল দুটির নাম একই কিন্তু সম্পূর্ন আলাদা ভেরিয়েবল।কারন একটা ফাংশনের ভিতর আর একটা বাইরে।ভিতরের এই ভেরিয়েবলটিকে বলে লোকাল ভেরিয়েবল।
  • আর বাইরের ভেরিয়েবলটির নাম গ্লোবাল ভেরিয়েবল।
  • লোকাল ভেরিয়েবলটি শুধু এই ফাংশনের ভিতরেই ব্যবহার করা যাবে,ফাংশনের বাইরে থেকে একসেস পাওয়া যাবেনা।
  • এই যে একটা ভেরিয়েবল শুধু একটা নির্দিষ্ট জায়গায় ব্যবহার করা যাচ্ছে,এটাই হল এই ভেরিয়েবলটির স্কোপ।
  • গ্লোবাল ভেরিয়েবল

    গ্লোবাল ভেরিয়েবল একটা প্রোগ্রামের ভিতর যেকোন জায়গায় ব্যবহার করা যায়।একটা ফাংশনে গ্লোবাল ভেরিয়েবল ব্যবহার করার জন্য দুটি পদ্ধতি আছে-

    পদ্ধতি ১ ($GLOBALS[‘number’])

    ধরুন উপরের প্রোগ্রামে ব্যবহৃত গ্লোবাল ভেরিয়েবলটি যদি ফাংশনে ব্যবহার করতে চান তাহলে নিচের মত কোড লিখতে হবে

    <?php
    $number = 8;
    
    function calculation(){
    $GLOBALS["number"];
    $number  = 10;
    
    $anothernumber = 20;
    
    $addnumber  = $number+$GLOBALS["number"];
    
    echo $addnumber;
    
    }
    calculation();
    
    ?>
    

    ফাংশনের বাইরের $number ভেরিয়েবলটিকে ফাংশনের ভিতর $GLOBALS অ্যারে দিয়ে নিয়ে এসেছি। ফাংশনটি যদি আরও বড় হত এবং আরও অন্য কোথাও গ্লোবাল ভেরিয়েবলটি ব্যবহার করতে হত তাহলে প্রতিবারই $GLOBALS[“number”] এটা লিখে ব্যবহার করতাম।

    পদ্ধতি ২ (global $number)

    এই পদ্ধতিতে একটা ম্যাজিক আছে একটু ভালভাবে পড়ুন।ধরুন আগের মতই ফাংশনের বাইরের $number (যেটা গ্লোবাল) ভেরিয়েবলটিকে ব্যবহার করার জন্য আমাদের শুধু $number এর আগে global শব্দটি লিখে দিতে হবে।অর্থাৎ নিচের মত

    1.global $number
    এবং এরপর থেকে যদি শতবারও এই ভেরিয়েবলটি ব্যবহার করতে হয় তাহলে কিভাবে লিখবেন? global $number এভাবে? না।বরং এভাবে $number. এবার ম্যাজিকটার কথা বলি নিচের কোড দেখুন

    <?php
    $number = 8;
    
    function calculation(){
    global $number;
    $number  = 10;
    
    $anothernumber = 20;
    
    $addnumber  = $number+$number;
    echo $addnumber;
    
    }
    
    calculation();
    
    ?>
    

    উপরের কোডে (যেখানে $GLOBALS অ্যারে ব্যবহার করলাম) ৬ নম্বর লাইনে $number হচ্ছে লোকাল ভেরিয়েবল আর এই কোডে এই লাইনটি দ্বারা গ্লোবাল ভেরিয়েবলে নতুন নাম্বার ১০ assign করা হয়েছে।(কারনতো আগেই বলেছি যে global $number কে ব্যবহার করতে এখন $number এভাবে লিখতে হবে) এরপর ১০ নম্বর লাইনে এই ভেরিয়েবলটির সাথে তাকেই আবার যোগ করেছি,কোড রান করান আউটপুট আসবে ২০।কাজেই global শব্দ ব্যবহার করে ভেরিয়েবল ব্যবহারের সময় সতর্ক থাকতে হবে।সবচেয়ে ভাল $GLOBALS[“number”] এভাবে ব্যবহার করুন।তাহলে আর কোন শংকা থাকেনা।

    আরেকটা গুরত্বপূর্ন জিনিস,নিচের কোড দেখুন এখানে echo করলে আউটপুট কত আসবে?১০, ২০ না ৩০?

    <?php
    $number = 10;
    $number = 20;
    $number = 30;
    echo $number;
    ?>
    

    উত্তর হচ্ছে ৩০,কারন প্রথমে $number এর মান ছিল ১০,এরপরের বার $number এর মান assign করা হয়েছে ২০ আর সব শেষে ৩০ এবং শেষেরটা echo হয়েছে। এই কোডের উপরের কোডটাতে যখন global $number লিখেছিলাম তখন এর মান ছিল ৮ (কারন ফাংশনের বাইরে গ্লোবাল $number এর মান ৮ আছে) পরের লাইনে $number = 10 দেয়াতে এর মান assign হয়েছে ১০ এবং এটিই এখন এর আসল মান।

    স্টাটিক ভেরিয়েবল

    কোন ভেরিয়েবলের সামনে static শব্দটি লিখলে সেটা স্টাটিক ভেরিয়েবল হয়ে যায়।একটা ফাংশনে স্টাটিক ভেরিয়েবল ব্যবহৃত হয়।ফাংশনের হেডারে প্যারমিটার থাকতে পারে এগুলিও ভেরিয়েবল।যখন ফাংশন এক্সিকিউট শেষ হয়ে যায় তখন ভেরিয়েবলগুলিও ধ্বংশ হয়ে যায়।স্টাটিক ভেরিয়েবল ব্যবহার করলে তা হয়না বরং ফাংশন শেষ হয়ে গেলেও এই ভেরিয়েবল মান ধরে রাখে এবং ঐ ফাংশনকে আবার call করলে তখন সে ধরে রাখা মানটি পাঠিয়ে দেয় যেমনঃ

    <?php
    function test_stat() {
    static $ekta_variable = 0;
    $ekta_variable++;
    echo $ekta_variable;
    echo "<br />";
    }
    test_stat();
    test_stat();
    test_stat();
    ?>
    

    ব্যাখ্যা

    ফাংশনে প্রথমে $ekta_variable ভেরিয়েবলের মান ছিল ০ আর $ekta_variable++ দ্বারা এই মান ১ বৃদ্ধি পেল তাই প্রথম ফাংশনটা call করাতে আউটপুট দিল ১,এখন $ekta_variable এর মান ০ থেকে হয়ে গেল ১।এরপর দ্বিতীয়বার ফাংশটাকে call করাতে আউটপুট দিল ২ এভাবে বাকিগুলি।

    যদি static শব্দটি উঠিয়ে দেন তাহলে আউটপুট আসবে
    1
    1
    1

    আর স্টাটিক ভেরিয়েবল ব্যবহারের কারনে এখন আউটপুট আসবে

    1
    2
    3

    সুপারগ্লোবাল ভেরিয়েবল

    পিএইচপি আগে থেকেই কিছু ভেরিয়েবল তৈরী করে রেখেছে ইচ্ছে করলে এই ভেরিয়েবলগুলি কোডের যেকোন জায়গায় ব্যবহার করতে পারেন।নাম সুপারগ্লোবাল ভেরিয়েবল।এসব ভেরিয়েবল ব্যবহার করে অনেক গুরত্বপূর্ন তথ্য পেতে পারেন যেমন ইউজারের অপরেটিং সিস্টেম কি,কোন ব্রাউজার ব্যবহার করছে,বর্তমান সেশন,আইপি এড্রেস ইত্যাদি।যেমন


    আউটপুট

    Your browser is: Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
    এখানে

    $_SERVER['HTTP_USER_AGENT'] 

    হচ্ছে সুপারগ্লোবাল ভেরিয়েবল।এরকম আরো আছে যেমন

    $_SERVER['REMOTE_ADDR'] এটা দিয়ে ক্লাইন্টের আইপি এড্রেস জানতে পারবেন।
    $_POST
    $_GET
    $_FILES আপলোডকৃত ফাইলের তথ্য আনা যায়
    $_ENV
    $_SEESION
    $_COOKIE
    

    এগুলির প্রতিটির উপর পরে আলাদা আলাদা টিউটোরিয়াল আছে তাই এখানে বিস্তারিত দেয়া হলনা।

    কনস্টান্ট

    ভেরিয়েবলের মান কোডে বিভিন্ন সময় বিভিন্ন রকম হয় বা পরিবর্তন হয়।কিন্তু কনস্টান্টের মান নির্ধারিত পরিবর্তন হবেনা পুরো স্ক্রিপ্টে। পিএইচপিতে define() ফাংশন দ্বারা কনস্টান্ট এর মান ঠিক করে দেয়া যায়।যেমন

    <?php
    define ('TUTORIAL','Great web development tutorial site');
    echo TUTORIAL;
    ?>
    

    আউটপুট
    Great web development tutorial site

    একবার মান ঠিক করে দিলে আর কখনও এই মান পরিবর্তন হবেনা।যেমন পাই (Π) এর মান ৩.১৪১৬ ,এদের মান নির্ধারন করার ক্ষেত্রে কনস্টান্ট ব্যবহার করা উপকারী।

    পিএইচপি ভেরিয়েবল

    পিএইচপি ভেরিয়েবল

  • ভেরিয়েবল হচ্ছে একটা পাত্রের মত(Container)যেখানে আমরা অনেক তথ্য রাখতে পারি।যেমন একটা টেক্সক্ট String “Hello Bangladesh” অথবা একটা integer value 100. কোন একটা ভেরিয়েবল এ একবার তথ্য রেখে সেটা পুরো কোডজুরে বারবার ব্যাবহার করতে পারেন,মুল তথ্য(value)টি বারবার রাখার পরিবর্তে।
  • পিএইচপি তে ভেরিয়েবল “$” এই চিহ্নটি দিয়ে অবশ্যই শুরু করতে হবে নাহলে কাজ করবেনা।
    একটা ভেরিয়েবলের মান স্ক্রিপ্টে যেকোন সময় পরিবর্তন হতে পারে।
  • ভেরিয়েবল নাম case sensitive.যেমন $a_number and $A_number দুটি আলাদা ভেরিয়েবল, পিএইচপি এর দৃষ্টিতে।
  • নিম্নোক্ত ভাবে পিএইচপি তে ভেরিয়েবল লেখা হয়

    $variable_name = Value;

    উদাহরন

    <?php
    $hello = "This is a string";
    $a_number = 4;
    $anotherNumber = 8;
    echo $hello ."<br/>";
    $total = $a_number+$anotherNumber;
    echo $total;
    ?>
    

    আউটপুট:

    This is a string
    12
    

    ব্যাখ্যা:

  • উপরের কোডে দেখুন স্ট্রিং কে কোটেশন এর ভিতর রেখেছি এবং $hello ভেরিয়েবলে তা রেখেছি,পরে echo দিয়ে তা ব্রাউজারে আউটপুট এনেছি।
  • আবার $a_number এবং $anotherNumber ভেরিয়েবলে সংখ্যা রেখেছি এবং পরে তা দিয়ে একটা অংক করেছি।
  • পিএইচপি একটা “Loosely Typed” ল্যাংগুয়েজ তাই ভেরিয়েবল declare করার সময় ভেরিয়েবল এর টাইপ(ধরন) উল্লেখ না করলেও পিএইচপি নিজে থেকে ভেরিয়েবল কে সঠিক ডেটা টাইপে রুপান্তর করে নেবে।
  • ভেরিয়েবল নামকরন পদ্ধতি

    ১.অবশ্যই কোন letter or “_”(under score) দিয়ে শুরু করতে হবে।
    ২. নামের মধ্যে alpha-numeric characters ও underscores. a-z, A-Z, 0-9, or _ . থাকতে পারে।
    ৩. ভেরিয়েবল নামে স্পেস থাকা যাবেনা।যদি নাম একের অধিক হয় তাহলে “___”underscore ($my_string) অথবা বড় হাতের অক্ষরে($myString)লিখতে হবে।

    দুটি জিনিস সবসময় লাগে

    <?php
    
    $feedback = "refatju";
    $domain = "@yahoo.com";
    
    $feedback = $feedback.$domain;
    
    echo $feedback;
    
    ?>
    

    একটা ডট (.) দুটি স্ট্রিংকে একসাথে করল,এটা সাধারন নিয়ম। একে বলে concatenate (কনক্যাটেনেট)। একই কাজ নিচের মত করে করা যায়। বিভিন্ন সময় কোডে এমন দেখতে পাবেন।

    <?php
    $feedback = "refatju";
    $domain = "yahoo.com";
    $feedback .= $domain;
    echo $feedback;
    ?> 
    

    এটার আউটপুট উপরের টির মতই আসবে। নিচের কোডব্লক দুটির আউটপুট একই হবে

    <?php
    $test++;
    echo $test;
    ?>
    

    আউটপুট ১ আসবে,উল্লেখ্য যে $test ভেরিয়েবলের মান যদি ঠিক করে না দেন তাহলে পিএইচপি এটার মান বাই ডিফল্ট ০ ধরে নেবে।

    <?php
    $test = $test+1;
    echo $test;
    ?>
    

    এখানেও আউটপুট ১ আসবে।

    পিএইচপি (PHP) কোডব্লকে যেভাবে কমেন্ট করবেন

    পিএইচপি কমেন্ট:

    কয়েকটা চিহ্ন আছে যদি কোন পিএইচপি কোডের সামনে এগুলা দিয়ে রাখেন তাহলে এ কোডগুলি আর execute হবেনা। তবে কোডগুলি এডিটরে থাকবে, অনেক লম্বা সময় পর যদি খোলেন তাহলে এসব কমেন্ট দেখে বুঝতে পারবেন আসলে কি করতে চেয়েছিলেন। একটা লাইনকে কমেন্ট করে রাখতে চাইলে // বা # আর বহু লাইনকে কমেন্ট করে রাখতে চাইলে কোডের আগে /* এবং শেষে */ চিহ্ন ব্যাবহার করতে হবে।
    পরামর্শ: অনেক প্রাকটিস করুন,যেটুকু শিখেছেন সেটুকুই।
    যেমন

    <?php এবং ?> 

    কোডের ভিতর

    echo "Hello World! ";
    echo "Hello World! ";
    echo "Hello World! ";
    echo "Hello World! ";
    echo "Hello World! ";
    

    এসব লিখতে থাকুন।

    <?php
    echo "Hello World!";
    //ekhane line break diyesi but output ek line hobe
    echo "Hello World!";
    
    /*In above there are two line.but output will.
    
    will be one line.here multiple line
    
    */
    ?>
    

    উপরের কোডে দেখুন একটি লাইন কমেন্ট করেছি // এই চিহ্ন দিয়ে আর একাধিক লাইন কমেন্ট করেছি /**/ এই চিহ্নের ভিতরে রেখে। আর রান করান দেখুন পিএইচপি কোডের ভিতর স্পেস কাজ করেনা,এভাবে প্রাকটিস করলে নতুন নতুন জিনিস দেখতে পাবেন।