[]
Php ile for döngüsü
Bir excel dosyasında binlerce satır var, her iki satır bir kişiye ait.
ben excel dosyalarını xml formatına çeviriyorum.
Karşıma bu görüntü çıkıyor.
<Record>
<Row
A="1"
B="KÖY"
C="5"
E="İsim"
F="E"
G="ALI"
H="01/07/1935"
I="İstanbul"
/>
</Record>
<Record>
<Row
A="837465837465"
E="ad"
G="Nick"
H="Istanbul"
I="Bağcılar"
/>
</Record>
Php for döngüsünü bullanarak her iki satırı birleştirip 1 tane üye elde edeceğim. Bunu veritabanına işleyeceğim.
Fakat For döngüsü her record attr için dönüyor. Bu yüzden her defasında döndüğünde bana çıkarmış olduğu sayı ad ve soyadların toplamı oluyor. Yani 20 kişi varsa ben count dediğim zaman karşıma, 40 tane satır var diyor.
Ben de bunun için böyle bir döngüye girmek istiyorum. Kod örneği;
for ($i = 0; $i <= count($xml->Record); $i++ )
{
echo $xml->Record[$i]->Row->attributes()["E"]. " "; //
echo $xml->Record[$i + 1]->Row->attributes()["E"]; //
}
Fakat konudan anlayan arkadaşlar bu kullandığım kodun ne kadar yanlış olduğunu görecektir.
Soyadlara ulaşmak için ikinci satıra ulaşarak soyadını okuyor ve veritabanına işliyorum.
Ama döngüm tamamlandığı zaman, 2. döngü başladığında problem oluşuyor. Ben + 1 diyerek ulaştığım, döngüye doğru yol almaya başlıyor. Ve 2. satırın bilgileri benim soyadı diye okuttuğum döngüye ekleniyor. İstediğim şey patlıyor.
Yapmak istediğim şu; döngüm $i++ değil de $i + 1 olsun. Bu şekilde 0, 2, 4, şeklinde satırları okumaya başlasın, fakat bunu yaparken aynı zamanda da 1, 3, 5, numaralı satırlara ulaşmam gerekiyor.
for döngüsüne $i += 2 yaparak 0, 2, 4, 6 şeklinde döngüyü çevirebilirim sanırım.
echo $xml->Record[$i - 1]->Row->attributes()["E"]; //
şeklinde 1, 3, 5 de yapabiliyorum fakat ilk döngüde 0 - 1 olacağı için hata vermeye başlayacağını tahmin ediyorum. if ile ilk döngüyü devre dışı bıraksam mantıklı olur mu yoksa bunun daha güzel bir şekli olabilir mi ?
teşekkürler...
ben excel dosyalarını xml formatına çeviriyorum.
Karşıma bu görüntü çıkıyor.
<Record>
<Row
A="1"
B="KÖY"
C="5"
E="İsim"
F="E"
G="ALI"
H="01/07/1935"
I="İstanbul"
/>
</Record>
<Record>
<Row
A="837465837465"
E="ad"
G="Nick"
H="Istanbul"
I="Bağcılar"
/>
</Record>
Php for döngüsünü bullanarak her iki satırı birleştirip 1 tane üye elde edeceğim. Bunu veritabanına işleyeceğim.
Fakat For döngüsü her record attr için dönüyor. Bu yüzden her defasında döndüğünde bana çıkarmış olduğu sayı ad ve soyadların toplamı oluyor. Yani 20 kişi varsa ben count dediğim zaman karşıma, 40 tane satır var diyor.
Ben de bunun için böyle bir döngüye girmek istiyorum. Kod örneği;
for ($i = 0; $i <= count($xml->Record); $i++ )
{
echo $xml->Record[$i]->Row->attributes()["E"]. " "; //
echo $xml->Record[$i + 1]->Row->attributes()["E"]; //
}
Fakat konudan anlayan arkadaşlar bu kullandığım kodun ne kadar yanlış olduğunu görecektir.
Soyadlara ulaşmak için ikinci satıra ulaşarak soyadını okuyor ve veritabanına işliyorum.
Ama döngüm tamamlandığı zaman, 2. döngü başladığında problem oluşuyor. Ben + 1 diyerek ulaştığım, döngüye doğru yol almaya başlıyor. Ve 2. satırın bilgileri benim soyadı diye okuttuğum döngüye ekleniyor. İstediğim şey patlıyor.
Yapmak istediğim şu; döngüm $i++ değil de $i + 1 olsun. Bu şekilde 0, 2, 4, şeklinde satırları okumaya başlasın, fakat bunu yaparken aynı zamanda da 1, 3, 5, numaralı satırlara ulaşmam gerekiyor.
for döngüsüne $i += 2 yaparak 0, 2, 4, 6 şeklinde döngüyü çevirebilirim sanırım.
echo $xml->Record[$i - 1]->Row->attributes()["E"]; //
şeklinde 1, 3, 5 de yapabiliyorum fakat ilk döngüde 0 - 1 olacağı için hata vermeye başlayacağını tahmin ediyorum. if ile ilk döngüyü devre dışı bıraksam mantıklı olur mu yoksa bunun daha güzel bir şekli olabilir mi ?
teşekkürler...
"$i += 2" sorunu çözer gibi. çoktan denemişsindir gerçi, oldu mu bari?
- edy (02.06.15 00:43:33)
1