İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Web Programlama (PHP, ASP, HTML, CSS, JavaScript)
Web Programlama (PHP, ASP, HTML, CSS, JavaScript)

xml elemanlarını php nesne olarak aktarma

G.Göktaş01.07.20164 cevap997 görüntüleme
#1
Merhaba,

Öncelikle php yada xml de deneyimim çok az olduğunu belirtmek isterim.

xml dosyasının bir kısmı aşağıda gibi:

<combinations>

<combination>
<id_combination>2289</id_combination>
<quantity>4</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.1B</reference>
<group_name>Renk</group_name>
<attribute_name>Mavi</attribute_name>
</combination>

<combination>
<id_combination>2289</id_combination>
<quantity>4</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.1B</reference>
<group_name>Beden</group_name>
<attribute_name>1</attribute_name>
</combination>

<combination>
<id_combination>2290</id_combination>
<quantity>20</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.2B</reference>
<group_name>Renk</group_name>
<attribute_name>Mavi</attribute_name>
</combination>

<combination>
<id_combination>2290</id_combination>
<quantity>20</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.2B</reference>
<group_name>Beden</group_name>
<attribute_name>2</attribute_name>
</combination>

</combinations>


Görüldüğü gibi aynı 'id_combination' değerine sahip ikişer alt öge mevcut. Anı id.lere sahip ögeleri aşağıdaki gibi birleştirmem gerekiyor. Yani 'id_combination' değerleri aynı olanları, devamındaki diğer ögelerden ortak değerlere sahip olanları tek olarak ve farklı değerlere sahip ögeleri aşağıdaki şekilde birleştirmek istiyorum.

no -> 2289
adet -> 4
referans ->K10100.1B
opsiyon -> Renk: Mavi / Beden: 1

no -> 2290
adet -> 20
referans ->K10100.2B
opsiyon -> Renk: Mavi / Beden: 2


Bu değerleri oluşturabilem için gerekli PHP kodu için yardım ederseniz çok sevinirim.

Teşekkür ederim.
Cevaplar
#2
<?php

$xml='<combinations>

<combination>
<id_combination>2289</id_combination>
<quantity>4</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.1B</reference>
<group_name>Renk</group_name>
<attribute_name>Mavi</attribute_name>
</combination>

<combination>
<id_combination>2289</id_combination>
<quantity>4</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.1B</reference>
<group_name>Beden</group_name>
<attribute_name>1</attribute_name>
</combination>

<combination>
<id_combination>2290</id_combination>
<quantity>20</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.2B</reference>
<group_name>Renk</group_name>
<attribute_name>Mavi</attribute_name>
</combination>

<combination>
<id_combination>2290</id_combination>
<quantity>20</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.2B</reference>
<group_name>Beden</group_name>
<attribute_name>2</attribute_name>
</combination>

</combinations>';

$dt = new SimpleXMLElement($xml);


$snc=array();
foreach ($dt->combination as $comb) {

   
    if (!isset($snc[(int)$comb->id_combination])) {
        $snc[(int)$comb->id_combination]=(object)array(
            'no'        =>    (int)$comb->id_combination,
            'adet'        =>    (int)$comb->quantity,
            'referans'    =>    (string)$comb->reference,
            'opsiyon'    =>    array()
        );   
    }

    $snc[(int)$comb->id_combination]->opsiyon[]=(string)$comb->group_name . ': ' . (string)$comb->attribute_name;
   
   
}


var_dump($snc);


çıktısı
G.Göktaş Konuyu açan
#3
Çok teşekkür ederim! Yarın ilk fırsatta deneyip sonucu paylaşırım.
G.Göktaş Konuyu açan
#4
orcnd dedi: ↑
<?php

$xml='<combinations>

<combination>
<id_combination>2289</id_combination>
<quantity>4</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.1B</reference>
<group_name>Renk</group_name>
<attribute_name>Mavi</attribute_name>
</combination>

<combination>
<id_combination>2289</id_combination>
<quantity>4</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.1B</reference>
<group_name>Beden</group_name>
<attribute_name>1</attribute_name>
</combination>

<combination>
<id_combination>2290</id_combination>
<quantity>20</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.2B</reference>
<group_name>Renk</group_name>
<attribute_name>Mavi</attribute_name>
</combination>

<combination>
<id_combination>2290</id_combination>
<quantity>20</quantity>
<unit_price_impact>0.000000</unit_price_impact>
<reference>K10100.2B</reference>
<group_name>Beden</group_name>
<attribute_name>2</attribute_name>
</combination>

</combinations>';

$dt = new SimpleXMLElement($xml);


$snc=array();
foreach ($dt->combination as $comb) {

  
    if (!isset($snc[(int)$comb->id_combination])) {
        $snc[(int)$comb->id_combination]=(object)array(
            'no'        =>    (int)$comb->id_combination,
            'adet'        =>    (int)$comb->quantity,
            'referans'    =>    (string)$comb->reference,
            'opsiyon'    =>    array()
        );  
    }

    $snc[(int)$comb->id_combination]->opsiyon[]=(string)$comb->group_name . ': ' . (string)$comb->attribute_name;
  
  
}


var_dump($snc);


çıktısı
Tekrar çok teşekkür ederim! Beni büyük bir zahmetten kurtardınız. :)
#5
Tekrar çok teşekkür ederim! Beni büyük bir zahmetten kurtardınız. :)
rica ederim forum bunlar için var

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.