Я хочу преобразовать данные массива в формат HTML и сохранить файл как.html файл. Как я могу это сделать?
Предположим, что массив:
Array
(
[0-50] => 880
[50-100] => 5
[100-150] => 1
[550-600] => 1
)
И я пишу файл вроде этого:
<?php
$file = fopen("abc.html","w");
?>
Я могу легко записать этот файл в формате CSV, но как это сделать, чтобы хранить html файл из данных?
мой ожидаемый результат -
Distance trips 0-50 880 50-100 5 100-150 1 550-600 1
расстояние и поездки здесь - заголовок таблицы, а в поле расстояния все являются ключами массива, а в походах - значениями массива.
Предположим, что я записал данные в этот файл ->
$html['head'] = '<html><head></head><body>';
$html['content'] = "<table><tr style='background-color:cyan'><td>Distance</td><td>total Trips</td></tr>";
foreach($de as $key=>$value)
{
$html['content'] .="<tr style='background-color:yellow'><td>$key</td><td>$value</td></tr>";
}
$html['foot'] = '</table></body>';
file_put_contents("abc.html", $html);
Теперь я хотел добавить этот файл с этими данными ->
$html['head'] = '<html><head></head><body>';
$html['content'] = "<h2>Data Regarding 0 - 50 km distance</h2>
<table width=900 border=5>
<tr style='background-color:cyan font-size:24px'>
<td>S.No</td>
<td>Customer Id</td>
<td>Total Distance</td>
<td>Total Trips</td>
<td>Average Speed</td>
";
foreach($dec as $result=>$value) {
$html['content'] .= "<tr style='background-color:lightgreen'><td>$value[cid]</td><td>$value[totalDistance]</td><td>$value[totalTrips]</td><td>$value[avgSpeed]</td></tr>";
}
$html['foot'] = '</table></body></html>';
То, что вы ищете, это режим добавления.
a => Open for writing only;
Или
a+ => Open for reading and writing;
То, что этот режим делает, - "поместите указатель файла в конец файла. Если файл не существует, попытайтесь его создать".
Таким образом, ваша линия fopen становится...
$file = fopen("abc.html","a");
Таким образом вы всегда можете добавлять все, что хотите.
Поскольку вы размещаете динамическую информацию в статическом HTML-документе, вам нужно переписать эту информацию для каждого редактирования.
Я предлагаю сохранить эту информацию в каком-то структурированном формате (например, json файл или базу данных), а при показе информации просто прочитайте эти данные. Было бы намного проще реализовать.
Например, переписывание данных в json файле:
$json = json_decode(file_get_contents('data.json'), true);
$json = array_merge($json, $newData);
file_put_contents(json_encode($json));
Для первой таблицы, которую вы хотите поместить в html файл, это будет работать с использованием вашей методологии:
<?php
//Creating the array
$de = Array("0-50" => 880,
"50-100" => 5,
"100-150" => 1,
"550-600" => 1
);
//creating the array corresponding to html code
$html = array();
//Creating the header
$html['head'] = '<html><head></head><body>';
//creating content - table header
$html['content'] = "<table><tr style='background-color:cyan'><td>Distance</td><td>total Trips</td></tr>";
foreach($de as $key=>$value)
{
$html['content'] .="<tr style='background-color:yellow'><td>$key</td><td>$value</td></tr>";
}
//footer
$html['foot'] = '</table></body>';
//no need to use fopen because file_put_contents manages that.
file_put_contents("abc.html", $html);
?>
Но для второй части вашего вопроса будет работать одна и та же логика, просто будьте осторожны, как вы используете массив, особенно здесь:
foreach($dec as $result=>$value)
{
$html['content'] .= "<tr style='background-color:lightgreen'><td>$value[cid]</td><td>$value[totalDistance]</td><td>$value[totalTrips]</td><td>$value[avgSpeed]</td></tr>";
}
Вы должны написать так:
foreach($dec as $result=>$value)
{
$html['content'] .= "<tr style='background-color:lightgreen'><td>".$value['cid']."</td><td>".$value['totalDistance']."</td><td>".$value['totalTrips']."</td><td>".$value['avgSpeed']."</td></tr>";
}
Привет надеюсь, что это помогло.