আমি কীভাবে পিএইচপি দিয়ে একটি বাইরের লুপটি ভাঙ্গতে পারি?


124

আমি পিএইচপি তে / ফরচ লুপের জন্য একটি বাইরের ভাঙ্গার চেষ্টা করছি।

এটি এর মতো অ্যাকশনস্ক্রিপ্টে করা যেতে পারে:

top : for each(var i:MovieClip in movieClipArray)
{
    for each(var j:String in nameArray)
    {
        if(i.name == j) break top;
    }
}

পিএইচপি সমতুল্য কি?


7
সর্বদা ডকুমেন্টেশনটি সর্বদা একবার দেখুন: php.net/manual/en/control-structures.break.php
ফেলিক্স ক্লিং

আমি 2 সমাধান পোস্ট করেছি, একটি লেবেলযুক্ত, যেমন একটি অ্যাকশন স্ক্রিপ্ট এবং অন্য যেটি কেবল ব্যবহার করেbreak
এডগার ভিলাগাস আলভারাডো

উত্তর:




16

আপনি কেবল একটি ব্রেক-এন বিবৃতি ব্যবহার করতে পারেন:

foreach(...)
{
    foreach(...)
    {
        if (i.name == j) 
            break 2; //Breaks 2 levels, so breaks outermost foreach
    }
}

আপনি যদি php> = 5.3 এ থাকেন তবে আপনি gotoঅ্যাকশনস্ক্রিপ্টের মতো লেবেল এবং গুলি ব্যবহার করতে পারেন :

foreach (...)
{        
    foreach (...)
    {
        if (i.name == j) 
            goto top;
    }
}
top:

তবে gotoঅবশ্যই সাবধানে ব্যবহার করতে হবে। গোটো অশুভ (খারাপ অভ্যাস হিসাবে বিবেচিত)


1
গোটোর জন্য বেশ কয়েকটি বৈধ ব্যবহার রয়েছে। এমনকি eval () মন্দ নয় (এবং এটি)। গোটোর চেয়ে এর কম ব্যবহারও রয়েছে।
lucian303

1
হ্যাঁ. এ কারণেই আমি বলেছিলাম "গোটো অবশ্যই সাবধানে ব্যবহার করা উচিত"
এডগার ভিলেগাস আলভারাডো


12

আপনি break 2;একই সাথে দুটি লুপ ভাঙতে ব্যবহার করতে পারেন । এটি "নামযুক্ত" লুপগুলির সাথে আপনার উদাহরণের মতো একেবারে সমান নয়, তবে এটি কৌশলটি করবে।


6
$i = new MovieClip();
foreach ($movieClipArray as $i)
{
    $nameArray = array();
    foreach ($nameArray as $n) 
        if ($i->name == $n) 
            break 2;
}

পুরো সরবরাহকৃত কোডটি পিএইচপি-তে রূপান্তরিত করার জন্য দুর্দান্ত চেষ্টা করুন, যদিও ব্রেক স্টেটমেন্টটি আমার যা করা দরকার তা তা করে না (এটি কেবল অভ্যন্তরীণ লুপটি শেষ করে)।
মার্টি

আপনার পৃষ্ঠাটি রিফ্রেশ করুন :) আমি বিরতি 2 দিয়ে প্রতিস্থাপন করেছি ... যা পিএইচপি ম্যানুয়াল অনুসারে: "ব্রেক একটি
optionচ্ছিক

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