php dizileri ekrana bastırırken sorun yaşıyorum
Merhabalar,
Bir xml linkinden veri çekiyorum. Verinin içinde Erkek atlet var. Erkek atletin siyah beyaz rengi var. Siyah rengin S-M-L-XL bedeni aynı şekilde beyazda da mevcut.
Xml deki veriyi foreach döngüsüne sokuyorum. Fakat bana sadece xmldeki en baştaki siyah rengin s bedenini getiriyor. Diğerlerini direkt olarak es geçiyor ve bir sonraki ürüne geçiyor.
ornek resim ->https://imgyukle.com/i/EAfCWc
xml linki ->http://www.gipastekstil.com/index.php?do=catalog/output&pCode=6548775307
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
XML biraz kafa karıştırıcı hazırlanmış. Dizinin altındaki elemanın altında yine tek elemanlı bir dizi tutmuşlar. Ama kendi içinde tutarlı.
Öncelikle verdiğiniz linkten PHP'de curl ile xml'i string olarak elde ettim ve $xmlString
adlı değişkenime aldım.
Bu aşamadan sonrasını yazıyorum:
$xml = simplexml_load_string($xmlString, 'SimpleXMLElement', LIBXML_NOCDATA);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
foreach($array['item'] as $itemKey=>$item) {
echo "<h1>Ürün $itemKey</h1>";
echo '<strong>Ürün Adı:</strong> '.($item['urunadi']).'<br>';
echo '<strong>Çeşitler:</strong>';
echo '<ul>' ;
foreach($item['variants']['variant'] as $variant) {
echo '<li>';
echo '<strong>Stok Kodu:</strong> '.$variant['vStockCode'].'<br>';
foreach($variant['options']['option'] as $option) {
echo '<b>'.$option['variantName'].'</b>: '.$option['variantValue'].'<br>';
}
echo '</li>';
}
echo '</ul>';
}
Burada örnek olarak tüm ürünlerin içine girip tüm varyasyonlarını yazdırdım.
Kodu inceleyip kendinize göre düzenleyebilirsiniz.