0

xml ファイルから ID を取得し、それを API クエリに渡し、結果を dom ドキュメントにロードしようとしています。私のforeachループは最初の反復のみを返し、その後停止するようです。

次の を取得するために戻らないのはなぜPROGRAM_IDですか?

//load results of first api call into simplexml - print_r here gives me a big array with all the expected rows in it
$progsitecontent = simplexml_load_file($progsiteapi);

//set which nodes to step through to reach required information
$totalprogsitecontent = $progsitecontent->matrix->rows->row;

//for each instance of a program id in this simplexml file:
foreach($totalprogsitecontent->PROGRAM_ID as $progid)
{

    //...substitute the program id into the api call
    $programdetails = $progdetailsapi_start.$progid.$progdetailsapi_end;
    $complete_program_details = simplexml_load_file($programdetails);

    //now for each instance of a programs info, load into a DOM document and carry out the below actions - from here down already works in another script so im sure the problem has to be above this point 

    $prog_info = $complete_program_details->matrix->rows->row;

    //create the top line container tag
    $row = $doc->createElement ("programInformation");

    //create the container tag
    $progID = $doc->createElement("programId");
    //fill it with the information you want
    $progID->appendChild ( $doc->createTextNode ( $prog_info->PROGRAM_ID ) );
    //attach this information to the row
    $row->appendChild($progID);

    //repeat for each element you want to include
    $progName = $doc->createElement("programName");
    $progName->appendChild ( $doc->createTextNode ( $prog_info->PROGRAM_NAME ) );
    $row->appendChild($progName);

    $progURLs = $doc->createElement("programUrls");
    $progURLs->appendChild ( $doc->createTextNode ( $prog_info->PROGRAM_URLS ) );
    $row->appendChild($progURLs);

    $progLogo = $doc->createElement("programLogo");
    $progLogo->appendChild ( $doc->createTextNode ( $prog_info->MERCHANT_LOGO ) );
    $row->appendChild($progLogo);

    $r->appendChild ($row);

}

echo $doc->saveXML();

これがどのように書かれたかについて自由にコメントしてください。私はまだ「ボッジ・イット・アンド・シー」の段階です:)

4

1 に答える 1

1

の完全な結果を見ないと多くを語ることはできませんが、次の$totalprogsitecontentようになるはずです。

foreach($totalprogsitecontent as $progid)
{
...
}

$totalprogsitecontent->PROGRAM_IDはすでに単一の値であるため、配列ではなくこの要素を反復処理しています。

また、$progidfor ループでは小文字ですが、参照している$progID-- PHP では大文字と小文字が区別されます。


XML コードを見ると、次のようになります。

foreach($progsitecontent->matrix->rows->row as $row){
     $progid = $row['PROGRAM_ID'];
     $affid = $row['AFFILIATE_ID'];
}
于 2012-09-05T11:11:39.380 に答える