2014-11-06 2 views
0

Я делаю что-то не так с моим циклом foreach. Но, похоже, мои знания не позволяют понять, что случилось. Мой код очень прост:Неверный цикл цикла

$xnl_file = "xml.xml"; 
    $xml = simplexml_load_file($xnl_file); 
    $my_file = 0; 
    foreach ($xml as $value){ 
     var_dump($value); 
     $CountryOrganizationId = "<CountryOrganizationId>".$xml->Partnership->CountryOrganizationId."</CountryOrganizationId>"; 
     $PartnershipId = "<PartnershipId>".$xml->Partnership->PartnershipId."</PartnershipId>"; 
     $OwnerId = "<OwnerId>".$xml->Partnership->OwnerId."<OwnerId>"; 
     $PartnerIdList = "<PartnerIdList><String>".$xml->Partnership->PartnerIdList->String."</String></PartnerIdList>"; 
     $CountryOrganizationId_contact = "<Contract><CountryOrganizationId>".$xml->Partnership->Contract->CountryOrganizationId."</CountryOrganizationId>"; 
     $ContractId = "<ContractId>".$xml->Partnership->Contract->ContractId."</ContractId>"; 
     $data = "<Partnership>".$CountryOrganizationId.$PartnershipId.$OwnerId.$PartnerIdList.$CountryOrganizationId_contact.$ContractId.$Role1.$Category1.$Rate1. 
     $Role2.$Category2.$Rate2.$Role3.$Category3.$Rate3."</Partnership>"; 
     echo $data; 

} 

Я получаю данные из XML и попытаться разобрать его на множественном один, но это просто скопировать те же данные снова и снова. Я не уверен, что я делаю неправильно. На мой взгляд, данные должны переписывать друг друга, каждый цикл времени делает то же самое, но они не меняются. В echo $ data я получаю столько результатов, сколько должен, проблема в том, что они такие же.

Если значение var_dump $ при запуске, я получаю хороший результат, что данные приближаются к циклу, но почему вывод одинаковый все время?

Может кто-нибудь дать мне совет?

Благодаря

+1

Чего добиваются? Я бы предложил вам посмотреть, что возвращает функция 'simplexml_load_file'. Если вы разместите здесь результат, мы сможем помочь. Но, пожалуйста, укажите вопрос. –

+2

Похоже, вы используете $ xml вместо $ value-> Partnership в своем цикле. –

+0

выход, как это: 'CZContract_58AB4635-D9C6-A04EMM-О-BDD15299MM-О-2A10BCFCZContract_58AB4635-D9C6-A04ELabor1250.0Paint2350.0Labor1250.0 ----------------- -------------------------------------------------- - CZContract_58AB4635-D9C6-A04EMM-O-BDD15299MM-O-2A10BCFCZContract_58AB4635-D9C6-A04ELabor1250.0Paint2350.0Labor1250.0 ----------------------- --------------------------------------------- CZContract_58AB4635-D9C6 -A04EMM-O-BDD15299MM-O-2A10BCFCZContract_58AB4635-D9C6-A04ELabor1250.0Paint2350.0Labor1250.0 ------------------------------ --------------------------------------- – Andurit

ответ

1

переменной $ значение никогда не используется, вы всегда с использованием $ xml. Попробуйте это так:

$xnl_file = "xml.xml"; 
$xml = simplexml_load_file($xnl_file); 
$my_file = 0; 
foreach ($xml as $value){ 
    var_dump($value); 
    $CountryOrganizationId   = "<CountryOrganizationId>" . $value->CountryOrganizationId . "</CountryOrganizationId>"; 
    $PartnershipId     = "<PartnershipId>" . $value->PartnershipId . "</PartnershipId>"; 
    $OwnerId      = "<OwnerId>" . $value->OwnerId . "<OwnerId>"; 
    $PartnerIdList     = "<PartnerIdList><String>" . $value->PartnerIdList->String . "</String></PartnerIdList>"; 
    $CountryOrganizationId_contact = "<Contract><CountryOrganizationId>" . $value->Contract->CountryOrganizationId . "</CountryOrganizationId>"; 
    $ContractId     = "<ContractId>" . $value->Contract->ContractId . "</ContractId>"; 
    $data       = "<Partnership>" . $CountryOrganizationId . $PartnershipId . $OwnerId . $PartnerIdList . $CountryOrganizationId_contact . 
            $ContractId . $Role1 . $Category1 . $Rate1 . $Role2 . $Category2 . $Rate2 . $Role3 . $Category3 . $Rate3 . 
            "</Partnership>"afdsf 

    echo $data; 
} 
+0

Эй, спасибо за ответ. Конечно, у него есть логика, и я понимаю, что вы имеете в виду. Проблема в том, что это меня выбрало ошибку: Извещение: Попытка получить свойство non-object :( – Andurit

+0

Не могли бы вы вывести результат var_dump ($ value); – motanelu

+0

http://pastebin.com/VM4EaDh7 Я бросаю его to pastebin, потому что его довольно большой текст и не смог добавить его в комментарий. Это значение, конечно, для каждой части XML. – Andurit

-2

Concat $ данные предыдущего значения {$ данных. = "......"}

foreach ($xml as $value) 
{ 
     var_dump($value); 
     $CountryOrganizationId = "<CountryOrganizationId>".$xml->Partnership->CountryOrganizationId."</CountryOrganizationId>"; 
     $PartnershipId = "<PartnershipId>".$xml->Partnership->PartnershipId."</PartnershipId>"; 
     $OwnerId = "<OwnerId>".$xml->Partnership->OwnerId."<OwnerId>"; 
     $PartnerIdList = "<PartnerIdList><String>".$xml->Partnership->PartnerIdList->String."</String></PartnerIdList>"; 
     $CountryOrganizationId_contact = "<Contract><CountryOrganizationId>".$xml->Partnership->Contract->CountryOrganizationId."</CountryOrganizationId>"; 
     $ContractId = "<ContractId>".$xml->Partnership->Contract->ContractId."</ContractId>"; 

     $data .= "<Partnership>".$CountryOrganizationId.$PartnershipId.$OwnerId.$PartnerIdList.$CountryOrganizationId_contact.$ContractId.$Role1.$Category1.$Rate1. 
     $Role2.$Category2.$Rate2.$Role3.$Category3.$Rate3."</Partnership>"; 
} 
echo $data; 
Смежные вопросы