3 বিভিন্ন সমান


149

মধ্যে পার্থক্য কি =, ==এবং ===?

আমি মনে করি একটি সমান চিহ্ন ব্যবহার করে একটি ভেরিয়েবল ঘোষণা করা হয় যখন দুটি সমান চিহ্ন একটি তুলনামূলক শর্তের জন্য এবং শেষ পর্যন্ত তিনটি সমান চিহ্ন চিহ্ন ঘোষিত ভেরিয়েবলের মানগুলির তুলনা করার জন্য।


উদাহরণটি দেখুন ... আমি পোস্ট করেছি এটি আরও বেশি বিষয় পরিষ্কার করে দেবে ..
ইনফ্যান্টপ্রো'আরবিন্দ '

1
উন্নত পিএইচপি ব্যবহারকারীদের জন্য, == এবং === এর মধ্যে পার্থক্যটি জানা এবং তাদেরকে জিজ্ঞাসা করা যখন "আমি নিশ্চিত যে দুটি অপারেশন একই ধরণের?", দয়া করে দেখুন নীচে আমার বেঞ্চমার্ক স্ক্রিপ্ট এ।
লুকাফেরারিও

@ স্ট্রাবাবেরি আমি মনে করি প্রশ্নের ট্যাগটিতে জাভাস্ক্রিপ্ট ট্যাগও অন্তর্ভুক্ত করা উচিত কারণ এটি ভাষাতেও প্রযোজ্য।
ফানকি চল্লিশ নিনার

(আপডেট): আমি একটি সম্পাদনায় জাভাস্ক্রিপ্ট ট্যাগ যুক্ত করেছি, যেহেতু লোকেরা =জাভাস্ক্রিপ্টে ব্যবহার করছিল সেখানে বেশ কয়েকটি প্রশ্ন রয়েছে । এটি কেবল পিএইচপি নয় অন্য ভাষার ক্ষেত্রেও প্রযোজ্য।
ফানকি চল্লিশ নিনার

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

উত্তর:


172

আপনার কাছে নিয়োগ অপারেটর , 'সমান' তুলনা অপারেটর এবং 'অভিন্ন' তুলনা অপারেটর======

$a = $b     Assign      Sets $a to be equal to $b.
$a == $b    Equal       TRUE if $a is equal to $b.
$a === $b   Identical   TRUE if $a is equal to $b, and they are of the same type. (introduced in PHP 4)

প্রয়োজনীয়তা ==এবং ===প্রতিটি ব্যবহারের জন্য পরিস্থিতি সম্পর্কে আরও তথ্যের জন্য ডক্সটি দেখুন


আমি যখন দুটি অভিন্ন তারিখের সাথে তুলনা করি, তখন আমার মিথ্যা ফলাফল হয়, কেন? উদাহরণস্বরূপ: Sandbox.onlinephpfunitions.com/code/…
stloc

3
@ স্টলোক, ===অবজেক্টের সাথে আপনাকে জানায় যে তারা যদি একই জিনিস হয় তবে তাদের একই বিষয়বস্তু না থাকলে নয়।
আন্দ্রেয়া

PHP4, Y2018 মধ্যে মজার মধ্যে ;-) চালু
mvorisek

22
  • = অ্যাসাইনমেন্ট অপারেটর
  • == তুলনা অপারেটর (দুটি ভেরিয়েবলের সমান মান রয়েছে কিনা তা পরীক্ষা করে দেখুন)
  • === অভিন্ন তুলনা অপারেটর (দুটি ভেরিয়েবলের সমান মান রয়েছে এবং একই ধরণের হয় কিনা তা পরীক্ষা করে দেখুন)।

8

অ্যাসাইনমেন্ট অপারেটর

== দুটি ভেরিয়েবলের একই মান রয়েছে কিনা তা পরীক্ষা করে

=== দুটি ভেরিয়েবলের মান একই এবং যদি এর ধরণগুলি একই হয় তবে তা পরীক্ষা করে


1
দুটি তুলনা অপারেটরের সংস্করণ সম্পর্কে! = এবং! == 'না' সম্পর্কেও জানুন। কিছু ভাষাগুলি ব্যবহার করে: = এসাইনমেন্ট হিসাবে, কেবল এই ধরণের বিভ্রান্তি এড়াতে।
ফিল পেরি

3

= অপারেটর একটি ভেরিয়েবলের মান নির্ধারণ করে $ ছয় = 6; মান 6 ভেরিয়েবল $ ছয় বরাদ্দ করা হয়

== অপারেটর চেক করুন উভয় ভেরিয়েবলের মান সমান কিনা এবং বেশিরভাগ ক্ষেত্রে যেমন বিবৃতি হিসাবে ব্যবহৃত হয়

$a = 2;
$b = 2;
if ($a == $b) { 
    echo both variables have the same value; 
}

=== অপারেটর == (মান সমান কিনা তা পরীক্ষা করে দেখুন) এবং একই তথ্য উভয় প্রকারের কিনা তাও পরীক্ষা করে দেখুন

$a = 2;
$b = "2";
if ($a === $b) {
    echo "both variable have same value and of same data type";
} else {
    echo 'both variable is either not equal or not of same data type';
}

// এখানে $ a টাইপ ইন্টের যেখানে $ বি টাইপ স্ট্রিং। সুতরাং এখানে আউটপুট


0

উন্নত পিএইচপি ব্যবহারকারীদের জন্য এবং নিজেদের জিজ্ঞাসা করার মধ্যে ==এবং তার মধ্যে পার্থক্যটি জেনে রাখা ===" যখন আমি নিশ্চিত যে উভয় অপারেশন একই ধরণের হয় তবে তার ==সাথে তুলনা করা কি তত দ্রুত ===?"

সংক্ষিপ্ত এবং সাধারণ উত্তরটি হ'ল: এই ক্ষেত্রেগুলি ব্যবহারে কোনও কার্যকারিতা লাভ নেই ===, সুতরাং আপনার সম্ভবত ব্যবহার করা উচিত ==

এটি নিজেরাই বেঞ্চমার্কিং করতে আগ্রহী ব্যক্তিদের জন্য, আপনি নীচের কোডটি অ্যাড-হক লিখেছেন এবং এর জন্য $aএবং বিভিন্ন মানের জন্য চেষ্টা করতে পারেন $b:

<?php
    // CONFIGURATION
    $cycles = 1000000;
    $a = 'random string 1';
    $b = 'random string 2';

    // FUNCTIONS
    function compare_two_equals($a, $b) {
        if ($a == $b) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    function compare_three_equals($a, $b) {
        if ($a === $b) {
            return TRUE;
        } else {
            return FALSE;
        }
    }

    // EXECUTION
    $time = microtime(TRUE);
    for ($count_a = 0; $count_a < $cycles; $count_a++) {
        compare_two_equals($a, $b);
    }
    $time_two_a = microtime(TRUE) - $time;
    $time = microtime(TRUE);
    for ($count_a = 0; $count_a < $cycles; $count_a++) {
        compare_three_equals($a, $b);
    }
    $time_three_a = microtime(TRUE) - $time;
    $time = microtime(TRUE);
    for ($count_a = 0; $count_a < $cycles; $count_a++) {
        compare_two_equals($a, $b);
    }
    $time_two_b = microtime(TRUE) - $time;
    $time = microtime(TRUE);
    for ($count_a = 0; $count_a < $cycles; $count_a++) {
        compare_three_equals($a, $b);
    }
    $time_three_b = microtime(TRUE) - $time;
    $time = microtime(TRUE);

    // RESULTS PRINTING
    print "<br />\nCOMPARE == (FIRST TRY): " . number_format($time_two_a, 3) . " seconds";
    print "<br />\nCOMPARE == (SECOND TRY): " . number_format($time_two_b, 3) . " seconds";
    print "<br />\nCOMPARE === (FIRST TRY): " . number_format($time_three_a, 3) . " seconds";
    print "<br />\nCOMPARE === (SECOND TRY): " . number_format($time_three_b, 3) . " seconds";
?>

দ্রষ্টব্য: তুলনাটি কেবল তখনই বৈধ হয় যখন প্রতিটি "প্রথম চেষ্টা" তার "সেকেন্ড ট্রাই" এর খুব কাছাকাছি থাকে। যদি সেগুলি উল্লেখযোগ্যভাবে পৃথক হয় তবে এর অর্থ হল যে তুলনামূলক সম্পাদন করার সময় প্রসেসর অন্য কিছু করতে ব্যস্ত ছিলেন এবং সুতরাং ফলাফলগুলি অবিশ্বস্ত হয় এবং বেঞ্চমার্কটি আবার চালানো উচিত।


9
এর মতো মাইক্রোবেঞ্চমার্কগুলি খুব নির্ভরযোগ্য নয়। আপনি কখনই আপনার পারফরম্যান্স সমস্যার কারণ হিসাবে ==বা ===এর কারণ হিসাবে উদ্বিগ্ন হতে চান তা খুব কমই । আইএমও: ===আপনি ==তুলনা সম্পর্কে স্পষ্টভাবে আলগা হতে চান না হলে ( ) কঠোর ( ) হওয়া ভাল । অদ্ভুত প্রান্তের সংখ্যাগুলির অর্থাত্‍ "5 is not a number" == 5হতাশাগুলি বাগ তৈরি করতে পারে। ===কখনও এই সমস্যায় ভোগেন না।
gnarf

আমার পরীক্ষাটি প্রোগ্রামারদের বলতে হয়েছিল যে তারা যদি ===পারফরম্যান্সের কারণে বেছে নিচ্ছেন তবে তারা ভুল। সুতরাং প্রোগ্রামাররা লজিক্যাল কারণে ===বা নির্বাচন করতে ==পারছেন না পারফরম্যান্সের কারণে নয়: একের বা অন্যটিকে পছন্দ করার জন্য বিভিন্ন কেস রয়েছে এবং পারফরম্যান্সটি মোটেও নেওয়া উচিত নয় not
লুকাফেরেরিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.