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?