У меня есть следующий код
$day = $_GET['day'];
$month = $_GET['month'];
if($day=='1'&&$month=='January'){
echo "<img src=\"playingCard/spades/13.png\" alt='' />";
} elseif ($day=='2'&&$month=='January'){
echo "<img src=\"playingCard/spades/12.png\" alt='' />";
} elseif ($day=='3'&&$month=='January'||$day=='1'&&$month=='February'){
echo "<img src=\"playingCard/spades/11.png\" alt='' />";
} elseif ($day=='4'&&$month=='January'){
echo "<img src=\"playingCard/spades/10.png\" alt='' />";
} ....
и есть форма, где вы можете ввести число для дня и значение для месяца.
То, что я хотел бы сделать, это показать конкретную игральную карту на определенную дату.
Например
January 1st = king of spades
January 2nd = Queen of spades
February 1st = Jack of spades
and so on
У меня есть папка, в которой я сохранил 4 подпапки с изображениями четырех карт игральных карт.
Пока код работает, но он будет очень длинным, если делать 365 дней, есть ли простой способ сделать это с меньшим количеством кода?
Надеюсь, я был достаточно ясен.
Заранее спасибо.
Как уже отмечали другие, без шаблона трудно дать идеальный ответ … но если вы хотите перебирать колоду снова и снова с на первый взгляд случайным, но предсказуемым порядком, вы можете использовать mod (%) с переключателем Постулаты:
//get numerical day of the year
$dayofyear = date('z', mktime(12, 0, 0, $month, $day, date('Y')));
$suit = '';
//will result in 1 on jan-1, 2 on jan-2, up to 13, then back to 1.
$card = ($dayofyear % 13) + 1;
$nSuit = ($dayofyear % 4) + 1;
switch ($nSuit) {
case 1:
$suit = 'spades';
break;
case 2:
$suit = 'hearts';
break;
case 3:
$suit = 'clubs';
break;
case 4:
$suit = 'diamonds';
break;
}
echo "<img src=\"playingCard/" . $suit . "/" . $card . ".png\" alt='' />";
это приведет к
spades 1
hearts 2
clubs 3
diamonds 4
spades 5
hearts 6
clubs 7
diamonds 8
spades 9
hearts 10
clubs 11
diamonds 12
spades 13
hearts 1
clubs 2
diamonds 3
У меня нет удобного интерпретатора PHP, но это должно дать вам общее представление (или это может сработать после минимального редактирования):
$day = $_GET['day'];
$month = $_GET['month'];
$images = array (
"January" => array ( 1 => "path to image", 2 => "path to another image", ... ),
"February" => array ( 1 => "path to image", 2 => "path to another image", ... ),
...
);
echo $images[$month][$day];
$images
переменная может быть перемещена в отдельный .php
файл и все это будет выглядеть примерно так (назовите файл, как вы хотите):
months_initialiser.php:
<?php
$images = array (
"January" => array ( 1 => "path to image", 2 => "path to another image", ... ),
"February" => array ( 1 => "path to image", 2 => "path to another image", ... ),
...
);
?>
Ваш фактический файл:
<?php
$day = $_GET['day'];
$month = $_GET['month'];
include 'months_initialiser.php';
echo $images[$month][$day];
?>
Если вы не можете определить обычный шаблон, для которого должна отображаться карта, вы можете поместить пути к файлам изображений в массив из 366 элементов, а затем использовать день года индексировать массив.
если ты Можно определить регулярный шаблон, вам нужен только массив из 52 элементов, а затем принять $day_of_year % 52
чтобы получить индекс. (Это было бы намного меньше кода для определения массива, но из вашего примера не похоже, что у вас есть обычный шаблон.)