v2.5.2
Giriş yap

PHP İç İçe Foreach Problemi

obey00
1,031 defa görüntülendi

Veritabanı tablomda iki adet Field var, birincisinde tüm taksit seçeneklerinin YÜZDE değerleri yer alıyor. Şu şekilde:

{"taksit_2":3.92,"taksit_3":4.91,"taksit_4":5.9,"taksit_5":6.88,"taksit_6":7.87,"taksit_7":8.86,"taksit_8":9.84,"taksit_9":10.83,"taksit_10":11.82,"taksit_11":12.8,"taksit_12":13.79}

İkinci tablomda ise; kullanıcının formda bu taksit oranlarının altındaki Text tipindeki INPUT'lara yazdıkları fiyatlar var. O da şu şekilde:

{"taksit_2":"1.00","taksit_3":"2.00","taksit_4":"3.00"}

Yani kullanıcıya ilk başta 2 taksitten 12 taksite kadar 11 adet INPUT gösteriyorum. Kullanıcı yukarıdaki örnekte gösterdiğim gibi mesela 3 adet INPUT'u dolduruyor ve bu şekilde kayıt ediyor. Tablodaki ikinci olan field'e kayıt oluyor burası...

Benim yapmak istediğim şey ise şu: Mesela kullanıcı yukarıdaki örnekte olduğu gibi "taksit_2, taksit_3, taksit_4" seçeneklerine değerler girdiyse; sayfa yenilendiği zaman hangi taksit oranlarına değer verdiyse (yani bu örnekte 3 tane taksit oranına değer girmiş) onların INPUT'larındaki Value'leri müşterinin kayıt ettiği VALUE'ler ile güncelleyeceğim; ayrıca yine o yerlerde birkaç kod parçası yazacağım...

Ancak iç içe foreach döngüsü yaptığım zaman; sadece SON/EN ALTTAKİ kayıt üzerinde işlem yapılıyor; diğerlerini atlıyor.

Örnek kod parçam:

foreach ((array)$cardRates as $key => $val) {
    foreach ((array)$arrAlts as $keyTaksit => $valAltTL) {
        if($keyTaksit == "taksit_{$cnt}") {
            $altTutarTL = $valAltTL;
            $altChecked = 'checked';
        } else {
            $altChecked = null;
    }
}

Yukarıdaki kod parçasını çalıştırdığım zaman; sadeceen son hangi kayıt yapıldıysa (örneğin taksit_3, taksit_6, taksit_11 değerlerine müşteri müdahale ettiyse; sadece taksit_11 için işlem yapıyor)

Umarım detaylı açıklayabilmişimdir.

Kıssadan hisse: Veritabanı tablomda 2 adet field mevcut; bunları JSON_DECODE ediyorum. İki tarafta'da KEY'ler aynı düzende kurulu olduğu için; AYNI/ORTAK olan KEY'ler üzerinde bir takım kodlar eklemem/müdahele etmem gerekiyor... Yardımcı olur musunuz?

obey00
1158 gün önce

abdullahx; bayağı benzer bir senaryo sorulmuş gerçekten. cevabını deneme fırsatım olmadı; birkaç saat önce alternatif çözüm düşünürken FOREACH'ten önce farklı ayrı bir array oluşturup; müşterinin güncellediklerini bu array'e push etmek ve harici oluşturduğum bu array içerisinden if/else yardımı ile kod parçalarımı yazarak sorunu çözdüm. Yine de farklı yöntemler arayan arkadaşlar için de cevabın oldukça faydalı olacaktır diye düşünüyorum. Teşekkürler