Неправильный цикл Foreach

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 $ value при запуске, я получаю хороший результат, что данные приближаются к циклу, но почему вывод одинаковый все время?

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

благодаря

Теги:
foreach
cycle

2 ответа

1
Лучший ответ

Переменная $ value никогда не используется, вы всегда используете $ 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
    Привет, спасибо за ответ. Конечно, в этом есть логика, и я понимаю, что вы имеете в виду. Проблема в том, что это выдает мне ошибку: Примечание: пытаюсь получить свойство необъекта :(
  • 0
    Можете ли вы опубликовать вывод var_dump ($ value);
Показать ещё 3 комментария
-1

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

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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню