dizi davranış SimpleXML bana garip bakar ve - 9941 öğeler tatili

0 Cevap php

EDIT3: Bu sorun benim localhost XAMPP PHP 5.3 kurulumu ile ilgili değil, ben test ettik php 5.2 çalıştıran uzaktan sunucularından herhangi oluşur gibi görünüyor. Hala belirsiz eğer hata / Edit3 neden kendi php veya xampp (ya da belki kombinasyonu)

I have an xml with about 12000 names to add to an array. The xml structure looks like this:

<smdusersync datetime="2010-12-13 13:51:16">
  <userstoadd>
    <User fnamn="Adam" enamn="Svensson" email="adam@darkeye.se" password="3906" />
    <User fnamn="Brooke" enamn="Jarnbjer" email="brooke@gmail.com" password="2729" />
    <User fnamn="Caesar" enamn="Carlsson" email="caesar@comhem.se" password="1668" />
   <!-- about 12000 other users -->
  </userstoadd>
  <userstoremove>
  </userstoremove>
</smdusersync>

EDIT2: Ben programlı hiçbir attbutes vb ile oluşturulan dahil olmak üzere diğer xml örnekler ile denedim, ve bu önemli değil - hala aşağıda açıklanan aynı sorun ... / EDIT2

When running a simple foreach loop on the xml userstoadd child, strange things start to happen when I push objects to an array.

(Aşağıdaki örnek hataya neden kodu vardır unutmayın - bu herhangi bir şekilde yararlı bir örnek değil ...)

Beklendiği gibi (burada sadece dizisine testcounter itme), basit bir foreach döngüsü Koşu çalışır:

    $user_xml = simplexml_load_file('users.xml');
    $xml_count = $user_xml->userstoadd->children()->count();
    $users_arr = array();
    $test_count = 0;
    foreach ($user_xml->userstoadd->children() as $user) {

        array_push($users_arr, $test_count); // << Works as expected!
        $test_count++;
    }
    echo $xml_count, '/', $test_count; 

$ Xml_count ve $ test_count hep aynı değere sahip.

Ben, aynı şeyi hariç ben diziye basit bir nesneyi sokmayın, her şey iyi çalışır eğer xml kullanıcı sayısı <= 9940:

    $user_xml = simplexml_load_file('users.xml');
    $xml_count = $user_xml->userstoadd->children()->count();
    $users_arr = array();
    $test_count = 0;
    foreach ($user_xml->userstoadd->children() as $user) {
        $dummy_object = new StdClass();  // << Empty dummy object
        array_push($users_arr, $dummy_object); // << CAUSES ERROR if more than 9940 items...!
        $test_count++;
    }
    echo $xml_count, '/', $test_count; // << SHOULD BE THE SAME!

When having 9940 xml user items, the output is as expected 9940/9940. BUT when having 9941 xml user items, the output is 9941/19881! And when having 9942 xml user items, the output is 9942/19882!

Aniden neredeyse 10000 farkı! Ve kullanıcı öğelerin içeriği I ile aynı sonucu xml kullanıcı öğeleri kopyalanan ve hareket ettik ... önemli görünmüyor ...

EDIT: When more than 9940 items, it suddeny doubles so that 9941 items give (9940 x 2) + 1 = 19881. No difference when using one single xml user item 12000 times. /EDIT

Herhangi bir fikir ne oluyor burada?

0 Cevap