Ilişkisel dizi son çifti bulma

5 Cevap php

Ben bir foreach ile ilişkilendirilebilir bir dizi döngü ediyorum. Ben bu yüzden o özel tedavi verebilir işlenen anahtar değer çifti son olup olmadığını kontrol edebilmek istiyorum. Herhangi ben bu en iyi şekilde yapmak nasıl bir fikir?

foreach ($kvarr as $key => $value){
   // I'd like to be able to check here if this key value pair is the last
   // so I can give it special treatment
}

5 Cevap

Bunun yinelenmesi yaparken dizi değiştirerek değil varsayarsak, döngü içinde ve 0 ulaştığında, size son hallediyoruz azaltır sayaç korumak olabilir:

<?php
$counter = count($kvarr);
foreach ($kvarr as $key => $value)
{
    --$counter;
    if (!$counter)
    {
    	// deal with the last element
    }
}
?>

, Bu kadar basit sayaçlar ve diğer 'kesmek' dan ücretsiz.

foreach ($array as $key => $value) {

   // your stuff

   if (next($array) === false) {
      // this is the last iteration
   }
}

Eğer fonksiyon next() "" evaluates to false , such as 0 olmayan bir boolean değer döndürebilir veya olabilir, çünkü === kullanmak zorunda unutmayın (boş dize).

Şüphesiz olacak tanıtımı diğer yanıtlar gibi bunu oldukça birkaç yolu vardır. Ama ben SPL ve CachingIterator öğrenmek için öneririm. İşte bir örnek:

<?php

$array = array('first', 'second', 'third');

$object = new CachingIterator(new ArrayIterator($array));
foreach($object as $value) {
    print $value;

    if (!$object->hasNext()) {
        print "<-- that was the last one";
    }
}

Çok basit foreach daha ayrıntılı değil, ama hepsi o kadar. Ve tüm farklı SPL Yineleyicilerde bunları öğrenmek kez :) Here is a nice tutorial., sizin için yepyeni bir dünya açılır

biz foreach ile dizi yineleme yapmak gerekmez, biz son eleman almak ve anahtar + değer elde etmek için anahtar ucu (), () ve akım () php fonksiyonlarını kullanabilirsiniz.

<?php

$a = Array(
  "fruit" => "apple",
  "car" => "camaro",
  "computer" => "commodore"
);

// --- go to the last element of the array & get the key + value --- 
end($a); 
$key = key($a);
$value = current($a);

echo "Last item: ".$key." => ".$value."\n";

?>

Eğer yineleme bunu kontrol etmek istiyorsanız, ucu () fonksiyonu hala yararlı olabilir:

foreach ($a as $key => $value) {
    if ($value == end($a)) {
      // this is the last element
    }
}