পিএইচপি-তে কীভাবে একটি সুইচ কেস 'বা' ব্যবহার করবেন


230

কোনও পিএইচপি সুইচটিতে কোনও 'ওআর' অপারেটর বা সমতুল্য ব্যবহারের কোনও উপায় আছে কি?

উদাহরণস্বরূপ, এর মতো কিছু:

switch ($value) {

    case 1 || 2:
        echo 'the value is either 1 or 2';
        break;
}

উত্তর:


505
switch ($value)
{
    case 1:
    case 2:
        echo "the value is either 1 or 2.";
    break;
}

এটাকে কেস ব্লককে "পড়ার মধ্য দিয়ে" বলা হয়। এই শব্দটি বেশিরভাগ ভাষায় একটি স্যুইচ স্টেটমেন্ট প্রয়োগ করে exists


135

আপনি যদি অবশ্যই এটির ||সাথে ব্যবহার করেন switchতবে আপনি চেষ্টা করতে পারেন:

$v = 1;
switch (true) {
    case ($v == 1 || $v == 2):
        echo 'the value is either 1 or 2';
        break;
}

না হলে আপনার পছন্দের সমাধানটি হত

switch($v) {
    case 1:
    case 2:
        echo "the value is either 1 or 2";
        break;
}

সমস্যাটি হ'ল বড় ক্ষেত্রে মোকাবেলা করার সময় উভয় পদ্ধতিই কার্যকর হয় না ... কল্পনা 1করুন 100এটি সঠিকভাবে কাজ করবে

$r1 = range(1, 100);
$r2 = range(100, 200);
$v = 76;
switch (true) {
    case in_array($v, $r1) :
        echo 'the value is in range 1 to 100';
        break;
    case in_array($v, $r2) :
        echo 'the value is in range 100 to 200';
        break;
}

58

আমি অন্য উত্তরগুলি পুনরায় পোস্ট করব না কারণ সেগুলি সমস্ত সঠিক, তবে আমি আরও যুক্ত করব যে আপনি আরও "জটিল" বিবৃতিগুলির জন্য স্যুইচ ব্যবহার করতে পারবেন না, যেমন: কোনও মান "3 এর চেয়ে বড়" হয় কিনা তা পরীক্ষা করতে, " ৪ থেকে "এর মধ্যে", ইত্যাদি "ইত্যাদি যদি আপনার এমন কিছু করার দরকার হয় ifতবে বিবৃতি ব্যবহার করতে আটকে থাকুন , বা যদি এর জন্য বিশেষ কোনও দৃ strong় প্রয়োজন হয় switchতবে এটিকে সামনের দিকে ব্যবহার করা সম্ভব:

switch (true) {
    case ($value > 3) :
        // value is greater than 3
    break;
    case ($value >= 4 && $value <= 6) :
        // value is between 4 and 6
    break;
}

তবে আমি যেমন বলেছি, আমি ব্যক্তিগতভাবে ifসেখানে একটি বিবৃতি ব্যবহার করব ।


1
এই ক্ষেত্রে () ওভার স্যুইচ () ওভার করার জন্য আপনি সুপারিশ করেছেন তা দেখে খুশি। এই ধরণের সুইচ কেবল জটিলতা যুক্ত করে, আইএমও।
moo

1
হ্যাঁ, এই স্টাইলটি বেছে নেওয়ার জন্য আপনার কাছে মোটামুটি বাধ্যযোগ্য কারণ থাকতে হবে তবে এটি সম্ভব কিনা তা জেনে রাখা ভাল।
নিকফ

2
আমি এটা জানতে পেরে আসলেই আনন্দিত। আমি যখনই বেসিক-ওয়াই ভাষায় কোনও প্রকল্প তৈরি করি, তখন আমি একটি সি-স্টাইল থাকা switch()অনুভব করি এবং যখন আমি সি-ইশ ভাষায় কাজ করি তখন আমি সত্যিই মিস করি Select Caseযা আসলেই একটি ছোট্ট উপায় বলে "এখানে একটি বড় কথা যদি ব্লক, অন্যথায় যদি, অন্যথায় যদি ... এখানে "।
স্ট্যান রজার্স

5
you can't use switch for more "complicated" statementsএটা can'tনাকি shouldn't? কারণ আপনার উদাহরণে আপনিcan
শার্কি

@ শার্কি তার অর্থ হ'ল সুইচের সাধারণ ব্যবহারের ক্ষেত্রে এটি করা যায় না। এই জাতীয় switch (true)জিনিসটি কোনও স্যুইচ ব্যবহারের সাধারণ ঘটনা নয়।
চেন লি ইওং

37

এই নিবন্ধে নিম্নলিখিত উদাহরণগুলির সাথে চেষ্টা করুন: http://phpswitch.com/

সম্ভাব্য স্যুইচ কেস:

(ঝ)। একটি সাধারণ স্যুইচ স্টেটমেন্ট

স্যুইচ বিবৃতি বিস্ময়কর এবং যাদু। এটি ভাষার একটি অংশ যা আপনাকে একটি মানের জন্য বিভিন্ন বিকল্পের মধ্যে নির্বাচন করতে এবং কোন মান সেট করা হয় তার উপর নির্ভর করে কোডের বিভিন্ন টুকরো চালানোর অনুমতি দেয়।

প্রতিটি সম্ভাব্য বিকল্পটি স্যুইচ বিবৃতিতে একটি কেস দ্বারা দেওয়া হয়।

উদাহরণ:

switch($bar)
{
    case 4:
        echo "This is not the number you're looking for.\n";
        $foo = 92;
}

(২)। ডিলিমিটিং কোড ব্লক

সুইচের প্রধান সতর্কতা হ'ল প্রতিটি ক্ষেত্রে পরেরটিতে চলে আসবে, যদি না আপনি বিরতি দিয়ে থামান। যদি উপরের সরল কেসটি 5 কে কভার করার জন্য বাড়ানো হয়:

উদাহরণ:

case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(গ)। একাধিক ক্ষেত্রে ফ্যালথথ্রু ব্যবহার করা

কারণ সুইচটি চলমান কোডটি বিরতি না পাওয়া পর্যন্ত চালিয়ে রাখবে, তাই পতনের জন্য ধারণাটি গ্রহণ করা এবং একাধিক মামলার জন্য একই কোড চালানো যথেষ্ট সহজ:

উদাহরণ:

কেস 2:

case 3:
case 4:
    echo "This is not the number you're looking for.\n";
    $foo = 92;
    break;

case 5:
    echo "A copy of Ringworld is on its way to you!\n";
    $foo = 34;
    break;

(ঈ)। উন্নত স্যুইচিং: শর্তের মামলা

পিএইচপি-র স্যুইচ আপনাকে কেবলমাত্র একটি নির্দিষ্ট ভেরিয়েবলের মান স্যুইচ করার অনুমতি দেয় না: আপনি যে কোনও ক্ষেত্রে যে কোনও এক্সপ্রেশন ব্যবহার করতে পারবেন, যতক্ষণ না এটি কেসটি ব্যবহারের জন্য কোনও মান দেয়। উদাহরণ হিসাবে, এখানে স্যুইচ ব্যবহার করে লিখিত একটি সাধারণ বৈধকারক:

উদাহরণ:

switch(true)
{
    case (strlen($foo) > 30):
        $error = "The value provided is too long.";
    $valid = false;
    break;

    case (!preg_match('/^[A-Z0-9]+$/i', $foo)):
        $error = "The value must be alphanumeric.";
    $valid = false;
    break;

    default:
    $valid = true;
    break;
}

আমি মনে করি এটি আপনার সমস্যা সমাধানে সহায়তা করতে পারে।


উদাহরণস্বরূপ (iv) আপনার কাছে কি কোনও বাস্তব বিশ্বের ব্যবহার-কেস রয়েছে?
পেড্রো মোরইরা


9

আমি আপনাকে http://php.net/manual/en/control-structures.switch.php (ম্যানুয়াল) দিয়ে যাওয়ার পরামর্শ দিই

switch ($your_variable)
{
    case 1:
    case 2:
        echo "the value is either 1 or 2.";
    break;
}

ব্যাখ্যা

একক বিবৃতি কার্যকর করার জন্য আপনার মানটি পছন্দ করুন আপনি বিরতি ছাড়াই এটি রাখতে পারেন যেমন বিরতি না পাওয়া পর্যন্ত এটি কোডটি কার্যকর করে চলেছে এবং যদি বিরতি পাওয়া যায় তবে এটি স্যুইচ কেস থেকে বেরিয়ে আসবে।


1

এই কোডটি ব্যবহার করুন:

switch($a) {
case 1:
case 2:
    .......
    .......
    .......
    break;
}

ব্লকটি 1 এবং 2 উভয়ের জন্য ডেকে আনা হয়েছে।




-4

অনুরোধ সহ অন্যথায় সেরা উপায় হতে পারে। এছাড়াও, এটি ব্যবহার করা সহজ এবং স্পষ্ট হতে পারে।

উদাহরণ:

<?php 
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>

পিএইচপি দিয়ে ভাল কাজ করবে না এমন ফাংশনগুলি ব্যবহার করার পরিবর্তে, বিশেষত যখন আপনার এইচটিএমএলে পিএইচপি থাকে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.