PHP İç İçe Foreach Problemi
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?
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