I am trying to take a two-tiered foreach which outputs an xml – and copy only the resulting output of that into another file.
I am so confused that I don’t even know if to ask “how to copy output to other file” or “how to convert foreach into string” – because writing a string over is no problem.
So far I have
// clear previous contents of tutorials.xml
$myFile = "tutorials.xml";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = "";
fwrite($fh, $stringData);
// here begins the string I want to write to the other file
echo <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<albums>
EOF;
foreach($albumInfo as $album) {
echo <<<EOF
<album>
<id>{$album->id}</id>
<title>{$album->title}</title>
<videos>
EOF;
}
foreach($videos as $video) // loop through our videos
{
$minutes = floor($video->duration/60);
$secondsleft = $video->duration%60;
if($secondsleft<10)
$secondsleft = "0" . $secondsleft;
echo <<<EOF
<video>
<id>{$video->id}</id>
<title>
<description>{$video->description}</description>
<duration>{$video->duration}</duration>
</video>
EOF;
}
echo <<<EOF
</album>
EOF;
?>
<?php echo '</albums>' ?>
// here ends the string I want to write to the other file
// the script below just takes the raw php and copies it over - I need the output.
<?php
copy('tutorials-job.php', 'tutorials.xml');
?>
Thank you for your help!
You already show that you know how to output content to a file with the first few lines of this code. You can either load your output into an output buffer and then write the contents of the buffer to the file, or instead of
echoing everything, put that data into a string and just write that string to a file.That being said, if you are not stuck on XML format, you might consider using something like JSON to where you can easily convert between your array/object representation to your serialized representation with a single line of code.