php ile bu xml yapısında dolaşarak

2 Cevap php

Im döngü çalışıyor ve şu xml yapısından bilgi görüntüler.

<users_list>
  −<users type="array">
    +<user>
      <id>Blah</id>
    </user>
    +<user></user>
    +<user></user>
  </users>
  <next_link>6</next_link>
  <prev_link>4</prev_link>
</users_list>

Düğümleri kapmak için aşağıdaki PHP kullanarak Im.

        $xml = simplexml_load_string($rawxml);
        foreach($xml->users_list AS $key){
            $name = $key->users->user->{"id"};
        }
            $next = $key->{"next_link"};
            $prev = $key->{"prev_link"};

Ive bir çift varyasyonlar denedi, ama herhangi bir etkisi görmüyorum. Benim değişkenleri veya geçersiz argümanlar echo ben bir şey almak ya da benim foreach fonksiyonu

2 Cevap

SimpleXML kullanırken, her zaman içerdikleri kök düğüm sonra değişkenleri isim olmalıdır, bu işler basit ve açık hale getirir:

$users_list = simplexml_load_string(
    '<users_list>
      <users type="array">
        <user>
          <id>Blah</id>
        </user>
        <user></user>
        <user></user>
      </users>
      <next_link>6</next_link>
      <prev_link>4</prev_link>
    </users_list>'
);

foreach ($users_list->users->user as $user)
{
    echo "User ", $user->id, "\n";
}

echo "next: ", $users_list->next_link, "\n";
echo "prev: ", $users_list->prev_link, "\n";

PHP giderirken, var_dump ve print_r arkadaşınız vardır!

Eğer bir dizi gibi sonucu göz isterseniz, daha sonra bir dizi döküm.

$value = (array) $value;

Ben şu ki:

$xmlStr = '<users_list>
<users type="array">
<user>
<id>Blah</id>
</user>
<user></user>
<user></user>
</users>
<next_link>6</next_link>
<prev_link>4</prev_link>
</users_list>';

$xml = simplexml_load_string($xmlStr); 

foreach($xml->users->user AS $key=>$value){
    $value = (array) $value;
    $name = $value["id"];
    var_dump($name);
}

bu çıktı verir:

string(4) "Blah"
NULL
NULL

SimpleXML hakkında daha fazla bilgi için PHP yardım belgeleri kontrol