পিএইচপি-তে একটি অগ্রণী লুপ ব্যবহার করার সময় একটি অ্যারের শেষ উপাদানটি সন্ধান করুন


215

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

for(int i=0; i< arr.length;i++){
     boolean isLastElem = i== (arr.length -1) ? true : false;        
}

পিএইচপি-তে তাদের অ্যারে অ্যাক্সেস করার জন্য অ-পূর্ণসংখ্যার সূচক থাকে। সুতরাং আপনাকে অবশ্যই পূর্বাঞ্চ লুপ ব্যবহার করে একটি অ্যারে দিয়ে পুনরাবৃত্তি করতে হবে। যখন আপনি কিছু সিদ্ধান্ত নেওয়ার প্রয়োজন হবে তখন এটি সমস্যাযুক্ত হয়ে উঠবে (ক্যোয়ারি তৈরি করার সময় আমার ক্ষেত্রে সংযোজন বা / এবং পরামিতি)।

আমি নিশ্চিত যে এটি করার কিছু মানক উপায় অবশ্যই আছে।

আপনি পিএইচপি এ কীভাবে সমাধান করবেন?


2
আপনি কি নির্ধারণের চেষ্টা করছেন যে যেখানে কোনও ধারাটির অংশগুলির মধ্যে আপনার "AND" বা "OR" যুক্ত করা উচিত?
ড্যারিল হেইন

1
কেবল প্রতি ইঙ্গিত করে যে আপনার প্রতিটি পুনরাবৃত্তির জন্য কোনও পদ্ধতি কল করার পরিবর্তে আপনার মোট চলক হওয়া উচিত। (int i = 0, int t = arrleleth; i <t; i ++) এর জন্য।
ওআইএস


: এই সমাধান কটাক্ষপাত stackoverflow.com/a/29474468/1478566
vbarbarosh

ব্যবহার শেষ (অ্যারে)
সিমিলার

উত্তর:


313

মনে হচ্ছে আপনি এর মতো কিছু চান:

$numItems = count($arr);
$i = 0;
foreach($arr as $key=>$value) {
  if(++$i === $numItems) {
    echo "last index!";
  }
}    

বলা হচ্ছে, আপনি foreachপিএইচপি-র মধ্যে একটি "অ্যারে" ব্যবহার করে পুনরাবৃত্তি করবেন না ।


আমি মনে করি আমি এই সমাধানটি যাব কারণ এটি আমার পোস্ট করা কোডের সাথে প্রায় অনুরূপ। এমনকি জেরেমির উত্তরটি ভাল ফিট তবে আমি মনে করি এটির তুলনায় এটি কিছুটা জটিল। আমি কোনও পরীক্ষা চালাইনি তবে আমার ধারণা এই উত্তরটি দ্রুত হবে কারণ এটি কীগুলির অ্যারে বের করে নি। এটির (1) গতি থাকবে
বৈভব কম্বলে

18
$numItems = count($arr)কৌতুক প্রয়োজন হয় না এবং পাঠযোগ্যতা হ্রাস করে - পিএইচপি-তে প্রতিটি সময় গণনা ($ আরআর) অ্যাক্সেস করার জন্য কোনও পারফরম্যান্স জরিমানা নেই। কারণ হ'ল আইটেম গণনা অভ্যন্তরীণভাবে অ্যারে শিরোনামে বিশেষ ক্ষেত্র হিসাবে সংরক্ষণ করা হয় এবং অন-ফ্লাই গণনা করা হয় না । এই কৌশলটি অন্যান্য ভাষা থেকে এসেছে (সি, জাভা?, ...)।
jhndodo

7
এটি আকর্ষণীয় @ জোহান্দো যে প্রতিবার গণনায় অ্যাক্সেসের জন্য কোনও পারফরম্যান্স পেনাল্টি নেই (penalty আরআর)। এই নির্দিষ্ট অপ্টিমাইজেশন নথিভুক্ত যেখানে আপনার কি কোনও লিঙ্ক / উত্স আছে? ধন্যবাদ!
zuallauz

2
এটি বরং দুঃখজনক যে পিএইচপি-তে এই সমস্যার সর্বাধিক সঠিক সমাধানটি বরং
অকেজো

1
@ টমসিহাপ $ আমাকে অ্যারের পুনরাবৃত্তির সাথে তাল মিলিয়ে লুপের ভিতরে বাড়ানো দরকার। $ আমাকে অ্যারেতে আইটেমের সংখ্যাটি উপস্থাপন করতে হবে, যাতে এটি শেষ আইটেমটি পৌঁছেছে তা নির্ধারণ করতে ব্যবহার করা যেতে পারে। ++ ছাড়া লুপটি কেবলমাত্র আইটেমের সংখ্যার সাথে "0" তুলনা করতে পারে।
ববি জ্যাক

201

আপনি অ্যারের শেষ কীটির মানটি ব্যবহার করে end(array_keys($array))এটি বর্তমান কী এর সাথে তুলনা করতে পারেন:

$last_key = end(array_keys($array));
foreach ($array as $key => $value) {
    if ($key == $last_key) {
        // last element
    } else {
        // not last element
    }
}

2
+1 আমি সম্মত - অন্যান্য সমাধান সংখ্যার সূচকগুলি থাকা অ্যারের উপর নির্ভর করে।
প্যাট্রিক গ্ল্যান্ডিয়েন

19
আমার নিজের প্রতিরক্ষা হিসাবে, আমার উত্তর সংখ্যার কীগুলি থাকা অ্যারেটির উপর নির্ভর করে না :)
রিচার্ড লেভাসিউর

2
স্ট্রিং তুলনা ধীরে ধীরে পূর্ণসংখ্যার সাথে পূর্ণসংখ্যার সাথে স্ট্রিংগুলির তুলনা করার সময় সর্বদা সঠিক নয় (আপনার কমপক্ষে === ব্যবহার করা উচিত ছিল)। আমি এটিকে ভোট দিচ্ছি।
ওআইএস

4
এটি মার্জিত, তবে কঠোর বিজ্ঞপ্তির কারণ কারণ "শেষ" একটি রেফারেন্স মান প্রত্যাশা করে :(
উইলিয়াম

10
কঠোর নোটিশের জন্য ঠিক করুন:$lastKey = array_search(end($array), $array);
অ্যাজাক্স

45

এত জটিল কেন?

foreach($input as $key => $value) {
    $ret .= "$value";
    if (next($input)==true) $ret .= ",";
}

এটি শেষ যুক্ত বাদে প্রতিটি মানের পিছনে একটি যুক্ত করবে!


2
যদি পরবর্তী $ ইনপুটটিতে মিথ্যাটির বুলিয়ান মান থাকে তবে এটি পরবর্তী () এর সাথে একটি বড় সমস্যা।
সোলসেনেকাহ

29
আমি ভুল না হলে এটি কাজ করে না কারণ পরবর্তী () কল করা অ্যারে পয়েন্টারকে অগ্রসর করে, তাই আপনি লুপের প্রতিটি অন্যান্য উপাদানকে এড়িয়ে যাচ্ছেন।
জর্দান লেভ

2
আমার পক্ষে কাজ করছে বলে মনে হচ্ছে না। দ্বিতীয় শেষ উপাদানটি কমা পায় না তবে এটি হওয়া উচিত।
zuallauz

1
মানটি মিথ্যা মিথ্যা হিসাবে সমান হলে এটি কাজ করে না। দ্বিতীয় থেকে শেষ এবং শেষ মানের মধ্যে শেষ কমা মুদ্রণ করে না।
ওআইএস

1
এটি পিএইচপি 7 এ ব্যবহার করতে ইচ্ছুক ব্যক্তির জন্য একটি নোট - অ্যারে পয়েন্টারটি ফোরচ লুপগুলিতে সরবে না এবং এটি কাজ করবে না।
স্কট ফ্ল্যাক

26

টু-ইন্ডে 0 পৌঁছে যাওয়ার অর্থ এটি লুপের শেষ পুনরাবৃত্তিতে রয়েছে।

$toEnd = count($arr);
foreach($arr as $key=>$value) {
  if (0 === --$toEnd) {
    echo "last index! $value";
  }
}

লুপের পরেও সর্বশেষ মানটি উপলভ্য, সুতরাং লুপের পরে যদি আপনি কেবল এটি আরও স্টাফের জন্য ব্যবহার করতে চান তবে এটি ভাল:

foreach($arr as $key=>$value) {
  //something
}
echo "last index! $key => $value";

আপনি যদি সর্বশেষ মানটিকে বিশেষ অভ্যন্তরের লুপ হিসাবে বিবেচনা করতে না চান। আপনার যদি বড় অ্যারে থাকে তবে এটি দ্রুত হওয়া উচিত। (যদি আপনি একই স্কুপের ভিতরে লুপের পরে অ্যারের পুনরায় ব্যবহার করেন তবে আপনাকে প্রথমে অ্যারে "অনুলিপি" করতে হবে)।

//If you use this in a large global code without namespaces or functions then you can copy the array like this:
//$array = $originalArrayName; //uncomment to copy an array you may use after this loop

//end($array); $lastKey = key($array); //uncomment if you use the keys
$lastValue = array_pop($array);

//do something special with the last value here before you process all the others?
echo "Last is $lastValue", "\n";

foreach ($array as $key => $value) {
    //do something with all values before the last value
    echo "All except last value: $value", "\n";
}

//do something special with the last value here after you process all the others?
echo "Last is $lastValue", "\n";

এবং আপনার মূল প্রশ্নের উত্তর দেওয়ার জন্য "ক্যোয়ারী তৈরি করার সময় আমার ক্ষেত্রে সংযোজন বা / এবং পরামিতি"; এটি সমস্ত মানকে লুপ করবে, তারপরে তাদের সাথে "এবং" এর সাথে একটি স্ট্রিংয়ে যোগ হবে তবে প্রথম মানের আগে বা শেষ মানের পরে নয়:

$params = [];
foreach ($array as $value) {
    $params[] = doSomething($value);
}
$parameters = implode(" and ", $params);

2
অবশ্যই এটি প্রতিটি পুনরাবৃত্তির জন্য - $ toEnd সম্পাদন করবে, বিন্দুটি স্থির করবে। যদি আমি এটিকে লুপের বাইরে নিয়ে যাই তবে এটি আর কাজ করবে না।
ওআইএস

সর্বকালের সহজ পদ্ধতি। $lastValue = array_pop($array);ধন্যবাদ.
এলিয়াস নিকোলাস

21

ইতিমধ্যে অনেক উত্তর রয়েছে, তবে এটির পুনরাবৃত্তিকারীদের অনুসন্ধান করাও মূল্যবান, বিশেষত যেহেতু এটি একটি স্ট্যান্ডার্ড উপায়ের জন্য বলা হয়েছে:

$arr = range(1, 3);

$it = new CachingIterator(new ArrayIterator($arr));
foreach($it as $key => $value)
{
  if (!$it->hasNext()) echo 'Last:';
  echo $value, "\n";
}

আপনি এমন কিছু সন্ধান করতে পারেন যা অন্যান্য ক্ষেত্রেও আরও নমনীয় কাজ করে।


দুর্দান্ত উত্তর। আমি প্রশংসা করি যে আপনি ভাষাটির বৈশিষ্ট্যগুলি ব্যবহারের উদ্দেশ্যে করছেন যা আপনি ব্যবহার করছেন। i=0;এবং ++i;পিএইচপি এর মতো স্ক্রিপ্টিং ভাষায় সবসময় হ্যাকিশ বলে মনে হয়।
চেডারমোনকি

15

একটি উপায় পুনরুক্তি আছে কিনা তা সনাক্ত করা যেতে পারে next। যদি পুনরুক্তির সাথে আর কোনও সংযুক্ত না থাকে তবে এর অর্থ আপনি শেষ লুপে রয়েছেন।

foreach ($some_array as $element) {
    if(!next($some_array)) {
         // This is the last $element
    }
}

আমি মনে করি যে এটি সবচেয়ে সহজ উপায় এবং কোডটি স্বল্পতম পরিমাণে প্রয়োজন!
হাই im zvaehn

1
"পিএইচপি 7-তে, পিএইচপি 7+ এর সাথে কাজ করে না, পূর্বাঞ্চ অভ্যন্তরীণ অ্যারে পয়েন্টার ব্যবহার করে না"।
ড্যামিয়েন দেবিন

8

সুতরাং, আপনার অ্যারের যদি স্বতন্ত্র অ্যারে মান থাকে তবে সর্বশেষ পুনরাবৃত্তি নির্ধারণ করা তুচ্ছ:

foreach($array as $element) {
    if ($element === end($array))
        echo 'LAST ELEMENT!';
}

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

foreach($array as $key => $element) {
    end($array);
    if ($key === key($array))
        echo 'LAST ELEMENT!';
}

কঠোর কপারেশন অপারেটরটিও নোট করুন, যা এই ক্ষেত্রে বেশ গুরুত্বপূর্ণ।


এটি বেশ অযোগ্য উপায় is
আপনার সাধারণ সেন্স

নাঃ। এইটা না. শেষ () ও (1) সম্পাদন করে। এটি অন্যান্য সমাধানগুলির তুলনায়ও কম, এবং এটি দুর্দান্তভাবে পাঠ করে -> যদি উপাদান অ্যারের সমাপ্তির সমান হয় তবে "শেষ" লিখুন।
রোক ক্রালজ

এটি 100000 মানের জন্য আমার প্রথম এবং শেষ উদাহরণের চেয়ে দ্বিগুণেরও বেশি ধীরে ধীরে।
ওআইএস

5

ধরে নিচ্ছি আপনার কাছে একটি ভেরিয়েবলের মধ্যে অ্যারে সঞ্চয় রয়েছে ...

foreach($array as $key=>$value) 
{ 
    echo $value;
    if($key != count($array)-1) { echo ", "; }
}

এটি খুব সহজ এবং দরকারী। আমি কেবল পূর্ববর্তী লুপের বাইরে প্রথমে অ্যারেটি গণনা করব যাতে প্রোগ্রামটি প্রতিবার আইটেমটি ফোরচ ফাংশনটি মূল্যায়ন করতে না হয়।
পাঠ্রস

3
এটি সাহসী অ্যারেগুলিতে কাজ করবে না। $ কী সর্বদা একটি সংখ্যা হয় না।
জোনাথন

5

ফরচ অ্যারে থেকে প্রথম এবং শেষ উপাদানটি পেতে

foreach($array as $value) {
    if ($value === reset($array)) {
        echo 'FIRST ELEMENT!';
    }

    if ($value === end($array)) {
        echo 'LAST ITEM!';
    }
}

4

আপনি এখনও এই পদ্ধতিটি সহযোগী অ্যারেগুলির সাথে ব্যবহার করতে পারেন:

$keys = array_keys($array);
for ($i = 0, $l = count($array); $i < $l; ++$i) {
    $key = $array[$i];
    $value = $array[$key];
    $isLastItem = ($i == ($l - 1));
    // do stuff
}

// or this way...

$i = 0;
$l = count($array);
foreach ($array as $key => $value) {
    $isLastItem = ($i == ($l - 1));
    // do stuff
    ++$i;
}

1
দয়া করে $ কী = $ অ্যারে [$ i] পরিবর্তন করুন; থেকে $ কী = $ কীগুলি [$ i]; লুপ জন্য প্রথম।
নরেক

4

প্রথম বা শেষটি ব্যতীত যদি প্রতিটি উপাদানের জন্য আপনার কিছু করার প্রয়োজন হয় এবং কেবল অ্যারেতে একাধিক উপাদান থাকে তবে আমি নিম্নলিখিত সমাধানটি পছন্দ করি।

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

লুপটির গঠনটি বিশ্রী মনে হতে পারে তবে আপনি এটিকে এইচটিএমএল টেবিল ট্যাগগুলিতে থিয়েড (শুরু), টিফুট (শেষ), টোডি (বর্তমান) এর ক্রম সাথে তুলনা করতে পারেন।

$first = true;
foreach($array as $key => $value) {
    if ($first) {
        $first = false;
        // Do what you want to do before the first element
        echo "List of key, value pairs:\n";
    } else {
        // Do what you want to do at the end of every element
        // except the last, assuming the list has more than one element
        echo "\n";
    }
    // Do what you want to do for the current element
    echo $key . ' => ' . $value;
}

উদাহরণস্বরূপ, ওয়েব বিকাশের শর্তে, আপনি যদি কোনও আনর্ডারর্ডেড তালিকার শেষে (উল) শেষ ব্যতীত প্রতিটি উপাদানগুলিতে সীমানা-নীচে যুক্ত করতে চান , তবে আপনি পরিবর্তে প্রথমটি (সিএসএস) বাদে প্রতিটি উপাদানটিতে সীমানা শীর্ষ যুক্ত করতে পারেন : আইআই 7 + এবং ফায়ারফক্স / ওয়েবকিট দ্বারা সমর্থিত প্রথম শিশুটি এই যুক্তি সমর্থন করে, যেখানে: শেষ শিশুটি আই 7 দ্বারা সমর্থিত নয়)।

আপনি প্রতিটি নেস্টেড লুপের জন্যও প্রথম ভেরিয়েবলটি পুনরায় ব্যবহার করতে পারবেন এবং জিনিসগুলি ঠিকঠাক কাজ করবে যেহেতু প্রতিটি লুপ প্রথম পুনরাবৃত্তির প্রথম প্রক্রিয়া চলাকালীন প্রথম মিথ্যা করে তোলে (সুতরাং বিরতি / ব্যতিক্রমগুলি সমস্যা সৃষ্টি করবে না) ।

$first = true;
foreach($array as $key => $subArray) {
    if ($first) {
        $string = "List of key => value array pairs:\n";
        $first = false;
    } else {
        echo "\n";
    }

    $string .= $key . '=>(';
    $first = true;
    foreach($subArray as $key => $value) {
        if ($first) {
            $first = false;
        } else {
            $string .= ', ';
        }
        $string .= $key . '=>' . $value;
    }
    $string .= ')';
}
echo $string;

উদাহরণ আউটপুট:

List of key => value array pairs:
key1=>(v1_key1=>v1_val1, v1_key2=>v1_val2)
key2=>(v2_key1=>v2_val1, v2_key2=>v2_val2, v2_key3=>v2_val3)
key3=>(v3_key1=>v3_val1)

থ্যাঙ্কস, এটি আমার প্রিয় সমাধান! এটি খুব নমনীয় এবং শুধুমাত্র একটি বুলিয়ান খরচ। বিটিডাব্লু, আমি মনে করি এটি কমপক্ষে একটি উপাদানও রয়েছে (কেবল একাধিক উপাদান নয়) এর জন্য কাজ করবে।
জেসি

4

শেষ উপাদানটি খুঁজে পাওয়ার সহজ উপায় এটি হওয়া উচিত:

foreach ( $array as $key => $a ) {
    if ( end( array_keys( $array ) ) == $key ) {
        echo "Last element";
     } else {
        echo "Just another element";
     }
}  

তথ্যসূত্র: লিঙ্ক


- ভাঙা লিঙ্ক -
30

3

আমার দৃ strong় অনুভূতি আছে যে এই "এক্সওয়াই সমস্যা" এর মূলে ওপি কেবলমাত্র implode()কাজ করতে চেয়েছিল ।


1
সত্য। এমন কিছু ঘটনা রয়েছে যেখানে ইমপ্লোড কেবল ব্যবহারিক নয়। উদাহরণস্বরূপ কল্পনা করুন যে এটিতে প্রচুর গতিশীল ভেরিয়েবলের সাথে এইচটিএমএল একটি দীর্ঘ স্ট্রিং প্রবর্তনের চেষ্টা করা হয়েছে। অবশ্যই, আপনি এটিতে একটি ob_start / ob_get_clean করতে পারেন, বা এটি একটি $ str = '...' হিসাবে তৈরি করতে পারেন। তবে, এমন সময় আছে যখন এটি কেবলমাত্র একটি বাচ্চার ওভারকিল হিসাবে বিবেচিত হতে পারে
অ্যালাস্টার ব্রায়েন

3

আপনার ইওএফ অ্যারের সন্ধানের উদ্দেশ্যটি কেবল আঠালো জন্য। নীচের কৌশলটির সাথে পরিচিত হন। আপনার ইওএফ প্রয়োজন হবে না:

$given_array = array('column1'=>'value1',
                     'column2'=>'value2',
                     'column3'=>'value3');

$glue = '';
foreach($given_array as $column_name=>$value){
    $where .= " $glue $column_name = $value"; //appending the glue
    $glue   = 'AND';
}
echo $where;

ণ; / p &:

column1 = value1 AND column2 = value2 AND column3 = value3


2

মনে হচ্ছে আপনি এর মতো কিছু চান:

$array = array(
    'First',
    'Second',
    'Third',
    'Last'
);

foreach($array as $key => $value)
{
    if(end($array) === $value)
    {
       echo "last index!" . $value;
    }
}

2
মানটি ব্যবহার করা সাধারণত একটি ভাল ধারণা নয় কারণ অ্যারের দুটি অভিন্ন মান থাকলে এটি সঠিকভাবে কাজ করবে না।
714

2

শেষ মানের পরে কমা যুক্ত করবেন না:

অ্যারে:

$data = ['lorem', 'ipsum', 'dolor', 'sit', 'amet'];

কাজ:

$result = "";
foreach($data as $value) {
    $resut .= (next($data)) ? "$value, " : $value;
}

ফলাফল:

print $result;

অ্যাডমিন সরবরাহকারী


1

আপনি একটি গণনা করতে পারেন ()।

for ($i=0;$i<count(arr);$i++){
    $i == count(arr)-1 ? true : false;
}

অথবা আপনি যদি কেবলমাত্র শেষ উপাদানটি সন্ধান করেন তবে আপনি শেষ () ব্যবহার করতে পারেন।

end(arr);

শুধুমাত্র শেষ উপাদানটি প্রদান করে।

এবং, এটি দেখা যাচ্ছে, আপনি পূর্ণসংখ্যার দ্বারা সূচক পিএইচপি করতে পারেন। এটি পুরোপুরি খুশি

arr[1];

1
শেষে (আরআর) এর অপূর্ণতা এটি অ্যারের অভ্যন্তরীণ পয়েন্টারটিকে শেষ উপাদানটিতে সেট করে ..
বিজয়

না, আপনি কীগুলি সংখ্যাসূচক এবং অনুক্রমিক হিসাবে না জানলে আপনি অ্যারে অ্যাক্সেস করতে পূর্ণসংখ্যার ব্যবহার করবেন না । বিবেচনা করুন: $a = array(0=>'A', 2=>'B', 'aaa'=>'C')। অ্যাক্সেস করলে আপনি কী পাবেন $a[count($a)-1]?
jhndodo

1

আপনি এটির মতোও কিছু করতে পারেন:

end( $elements );
$endKey = key($elements);
foreach ($elements as $key => $value)
{
     if ($key == $endKey) // -- this is the last item
     {
          // do something
     }

     // more code
}

প্রান্তটি অ্যারের পরিবর্তে মানটি দেয়, সুতরাং আপনি যেভাবে এটি তৈরি করেছেন তা কার্যকর হয় না। স্ট্রিং তুলনা এছাড়াও ধীর তারপর পূর্ণসংখ্যার।
ওআইএস

তুমি ঠিক. এটি শেষ হওয়া উচিত ($ উপাদানসমূহ); $ endKey = কী ($ উপাদানসমূহ);
KOGI

1

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

$first = true;
foreach ( $items as $item ) {
    $str = ($first)?$first=false:", ".$item;
}

প্রথম ঘোষণা না করে এটিকে আরও সহজ করুন; ফরচ ($ আইটেমগুলি $ কী => $ আইটেম হিসাবে) ব্যবহার করুন তবে $ আরআর = ($ কী == 0)?
মিলান রাইলেক্স রিস্টিক 11


0

আপনি এটি করতে পারেন এমন আরও একটি উপায় এখানে:

$arr = range(1, 10);

$end = end($arr);
reset($arr);

while( list($k, $v) = each($arr) )
{
    if( $n == $end )
    {
        echo 'last!';
    }
    else
    {
        echo sprintf('%s ', $v);
    }
}

0

যদি আমি আপনাকে বুঝতে পারি তবে আপনার দরকার কেবল অ্যারেটি উল্টানো এবং একটি পপ কমান্ড দ্বারা শেষ উপাদানটি পাওয়া:

   $rev_array = array_reverse($array);

   echo array_pop($rev_array);

0

আপনি নিজের ক্যোয়ারী তৈরি করতেও এটি চেষ্টা করতে পারেন ... INSERT এর সাথে এখানে দেখানো হয়েছে

<?php
 $week=array('one'=>'monday','two'=>'tuesday','three'=>'wednesday','four'=>'thursday','five'=>'friday','six'=>'saturday','seven'=>'sunday');
 $keys = array_keys($week);
 $string = "INSERT INTO my_table ('";
 $string .= implode("','", $keys);
 $string .= "') VALUES ('";
 $string .= implode("','", $week);
 $string .= "');";
 echo $string;
?>

0

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

বর্তমান গৃহীত সমাধানটি লুপের মধ্যে একটি লুপ এবং একটি চেক ব্যবহার করে যা প্রতিটি_সিংল_িটেশন তৈরি করা হবে, এটি করার সঠিক (দ্রুত) উপায়টি হল:

$numItems = count($arr);
$i=0;
$firstitem=$arr[0];
$i++;
while($i<$numItems-1){
    $some_item=$arr[$i];
    $i++;
}
$last_item=$arr[$i];
$i++;

একটি সামান্য বাড়ির তৈরি মানদণ্ড নিম্নলিখিতগুলি দেখিয়েছিল:

পরীক্ষা 1: মডেল মর্গের 100000 রান

সময়: 1869.3430423737 মিলিসেকেন্ড

টেস্ট 2: মডেলের 100000 রান শেষ হলে

সময়: 3235.6359958649 মিলিসেকেন্ড


0

যাওয়ার আরেকটি উপায় হ'ল পূর্ববর্তী লুপ চক্রের ফলাফলটি মনে রাখা এবং এটি শেষ ফলাফল হিসাবে ব্যবহার করুন:

    $result = $where = "";
    foreach ($conditions as $col => $val) {
        $result = $where .= $this->getAdapter()->quoteInto($col.' = ?', $val);
        $where .=  " AND ";
    }
    return $this->delete($result);

0

আমি ব্যক্তিগতভাবে এই ধরণের নির্মাণ ব্যবহার করি যা এইচটিএমএল <ul> এবং <লি> উপাদানগুলির সাথে একটি সহজ ব্যবহার সক্ষম করে: কেবলমাত্র অন্য কোনও সম্পত্তির জন্য সাম্য পরিবর্তন করে ...

অ্যারেতে মিথ্যা আইটেম থাকতে পারে না তবে অন্য সমস্ত আইটেম যা ভুয়া বুলেটিনে ফেলে দেওয়া হয়।

$table = array( 'a' , 'b', 'c');
$it = reset($table);
while( $it !== false ) {
    echo 'all loops';echo $it;
    $nextIt = next($table);
    if ($nextIt === false || $nextIt === $it) {
            echo 'last loop or two identical items';
    }
    $it = $nextIt;
}


0
<?php foreach($have_comments as $key => $page_comment): ?>
    <?php echo $page_comment;?>
    <?php if($key+1<count($have_comments)): ?> 
        <?php echo ', '; ?>
    <?php endif;?>
<?php endforeach;?>

0

এখানে আমার সমাধানটি দেওয়া হয়েছে: কেবল আপনার অ্যারের গণনাটি বিয়োগ 1 (যেহেতু তারা 0 থেকে শুরু করে) পান get

$lastkey = count($array) - 1;
foreach($array as $k=>$a){
    if($k==$lastkey){
        /*do something*/
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.