PHP ile belli bir döngüde işlem yaptırma

PHP ile belli bir döngüde işlem yaptırma

Merhaba arkadaşlar, php‘de belli döngü yapıldıktan sonra alt satıra geçme veya bir şeyler ekleme yapmak için mod alma yöntemi ile kalanlar ise bize sonucu verecektir.

Bunu yapmak için yöntem var. Öncelikle bizim bu döngüdeki dizimizin numarası ardışık mı artıyor ona bakmamız gerekiyor. eğer ardışık artıyor ise;

$array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 1, 2, 3,4,5,'x', 'y', 'z'];
//yani dizimiz bu şekilde ise

ben buradaki diziye her 4 tane elemandan sonrasına bir çizgi eklemek istiyorsam yapmam gerekenler;

buradaki $key bize dizinin sıra numarasını vermektedir $value ise dizideki elemanı bize verir. $key değişkeninin mod 4’nü alırız kalan 3 ise == operatörü kullanarak her 4 sıradan sonrasına herhangi bir şeyler ekleyebiliriz yada bir işlem yaptırabiliriz.

foreach ($array as $key => $value) {
    echo $value."<br>";
    if (($key % 4) == 3) {
        echo "<hr>";
    }
}
Çıktı

fakat dizinin sırası ardışık değilde karışık olsaydı yukarıdaki kodlar aynı sonucu alabilir miydik? hayır, çünkü 4 sayısının mod 4 aldığımızda kalan 0 iken 4 sayısından sonra gelen 9 sayının mod 4 aldığımızda ise kalan 1 olacaktır bu art arda çizgi ekler. Bunu önüne geçmek için ise kendimiz ardışık sayı oluşturacağız.

$array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 1, 2, 3,4,5,'x', 'y', 'z', 569 => 'deneme', 34234324 => 'genç yazılımcı', 'her üç döngüde alt satıra geçme', 'www.gencyazilimci.com'];
// dizimiz böyle ise 

buradaki $start değişkeni bizim başlangıcımız $line değişken ise ardışık sayıları oluşturuyor.

$start = 0;
foreach($array as $key => $val){
    $line = $start++;  
    echo $val." -- kalan:".$line % 4 ." --- dizi no:".$key." --- line no:".$line."<br>";
    if (($line % 4) == 3  ) {
        echo "<hr>";
    }
}

Bu kodu biraz daha özelleştirelim üst görsellerde gördüğümüz üzere dizinin son elemanından sonra bir çizgi ekleniyor. Bu çizginin olmaması için tekrardan if else ile dizi elemanlarını toplamının 1 eksiği ile dizi sıra numarasıyla kontrolü sağlarız.


$start = 0;
foreach($array as $key => $val){
    $line = $start++;  
    echo $val." -- kalan:".$line % 4 ." --- dizi no:".$key." --- line no:".$line."<br>";
    if (($line % 4) == 3  ) {
        if ($line != (count($array) - 1)) {
            echo "<hr>";
        }
        
    }
}
çıktı

Sondaki elemanın altındaki çizgiyi kaldırmış olduk.


While döngüsü ile yazılmış hali.

$start = 0;
while (list($key, $val) = each($array)) {
    $line = $start++;  
    echo $val." -- kalan:".$line % 4 ." --- line no:".$line."<br>";
    if (($line % 4) == 3  ) {
        if ($line != (count($array) - 1)) {
            echo "<hr>";
        }
        
    }
}

For Döngüsü ile yazılmış hali.

$start = 0;
$keys = array_keys($array);  
$total = count($array);    
for($i=0; $i < $total; ++$i) {  
    $line = $start++;  
    echo $array[$keys[$i]]." -- kalan:".$line % 4 ." --- line no:".$line."<br>";
    if (($line % 4) == 3  ) {
        if ($line != (count($array2) - 1)) {
            echo "<hr>";
        }
        
    }
}

arkadaşlar yazımızda hata veya önerileriniz olursa lütfen yorum yapmayı unutmayın.

Tavsiye Yazı:  PHP MySQL ile bir kategoriye ait toplam yazı sayısı nasıl gösterilir?

Unutmayın! Paylaşmak; kazanmanın en hızlı ve kolay yoludur. Bir sonraki blog’ta görüşmek dileğiyle esen kalın.


Bir Cevap Yazın