Я работаю над PHP-написанным html-календарем, который записывает каждый день месяца в цикле while.
Каждый день месяца находится внутри пары тегов, и определенным дням нужен атрибут titleв теге.Эти дни будут получены из базы данных MySQL и сохранены в массиве, подобном следующему: $ array ($ day_number => $ amount).
Примером массива может быть: (3 => 5, 12 => 4, 15 => 6, 22 => 10, 27 => 2, 31 => 4).Массив будет содержать ключи только для тех дней, когда количество не равно нулю.
Я могу придумать два способа сделать это.Мне интересно, какой из них более эффективен, или если есть другой, лучший способ.
Вариант 1.) Проверяйте массив на каждой итерации цикла создания html, чтобы увидеть, содержит ли он соответствующий день.Если это так, добавьте соответствующий атрибут title к тегу.Поэтому я бы использовал что-то вроде:
$day = 1;
while($day < 31) {
if(array_key_exists($day,$array)) {
echo "<td title=\"$array['$day'] spots available\">$day</td>";
}
else echo "<td title\"No spots available for this date\">$day</td>";
$day++;
}
2.) Используйте цикл, чтобы поместить весь календарь в строковую переменную, затем используйте строковые функции для вставки специальных атрибутов заголовка.
$day = 1;
while($day < 31) {
$month .= "<td>$day</td>";
$day++;
}
foreach($array as $day_number=>$quantity) {
$month = str_replace("<td>$day_number</td>","<td title=\"$quantity spots available\">$day_number</td>",$month)
}
В этом приложении любой метод будет выполнен очень быстро, но мой вопрос носит более общий характер.Лучше использовать строковые функции после цикла, который создает базовый HTML, или для проверки / обработки на каждой итерации?Или есть третий, лучший способ?
Я изучил PHP полностью самостоятельно, используя интернет-ресурсы, поэтому я не представляю, насколько плохим может быть мое кодирование.Любая помощь приветствуется.
Спасибо.