Я застрял на несколько дней, пытаясь найти лучший способ для go делать то, что мне нужно. У меня есть json URL-адрес, который я получаю данные из массива, как показано ниже. Диапазон дат может составлять от месяца до полных лет. Мне нужно проверить, если билеты soldout
или нет. Если soldout
равно true, то в эту дату в календаре должно отображаться soldout
. Если soldout
равно false, в календаре должна отображаться переменная $url
, которая соответствует дате в start
.
В формате массива, с которым я пытаюсь работать
array(3) {
[0]=> object(stdClass)#1 (4) {
["id"]=> string(3) "165"
["start"]=> string(18) "05/02/2020 1:00 PM"
["title"]=> string(19) "Event 1:00 PM"
["alldetails"]=> array(1) {
[0]=> object(stdClass)#2 (1) {
["soldout"]=> bool(false)
}
}
}
[1]=> object(stdClass)#3 (4) {
["id"]=> string(3) "166"
["start"]=> string(18) "07/19/2020 5:00 PM"
["title"]=> string(19) "Event 5:00 PM"
["alldetails"]=> array(1) {
[0]=> object(stdClass)#4 (1) {
["soldout"]=> bool(false)
}
}
}
[2]=> object(stdClass)#5 (4) {
["id"]=> string(3) "167"
["start"]=> string(18) "11/14/2020 9:00 PM"
["title"]=> string(19) "Event 1:00 PM"
["alldetails"]=> array(1) {
[0]=> object(stdClass)#6 (1) {
["soldout"]=> bool(false)
}
}
}
}
Извлечение данных из json массива
<?php
$array = 'https://URL/feed.json?start=2020-05-02&end=2020-11-14';
$obj = json_decode(file_get_contents($array));
foreach ($obj as $key => $value){
$id = $value->id;
$start = $value->start;
$title = $value->title;
$url = '<a href="https://url/'.$id.'">'.$title.'</a>';
$details = $value->alldetails;
foreach($details as $nested){
$nested->soldout; //Outputs 1 or is blank
}
}
?>
Чей-то календарь, в который я пытался вставить данные. Не уверен, стоит ли мне использовать это или попробовать свои силы в создании собственного. Не очень хорошо с форматированием даты в PHP Долгий путь обучения и большое количество необходимых переподготовок.
<?php
$monthNames = Array("January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December");
if (!isset($_REQUEST["month"])) $_REQUEST["month"] = date("n");
if (!isset($_REQUEST["year"])) $_REQUEST["year"] = date("Y");
$cMonth = $_REQUEST["month"];
$cYear = $_REQUEST["year"];
$prev_year = $cYear;
$next_year = $cYear;
$prev_month = $cMonth-1;
$next_month = $cMonth+1;
if ($prev_month == 0 ) {
$prev_month = 12;
$prev_year = $cYear - 1;
}
if ($next_month == 13 ) {
$next_month = 1;
$next_year = $cYear + 1;
}
?>
<table>
<tr align="center">
<td bgcolor="#999999" style="color:#FFFFFF">
<table width="100%" cellspacing="0" cellpadding="0" border="1">
<tr>
<td width="50%" align="left"><a href="<?php echo "?month=". $prev_month . "&year=" . $prev_year; ?>" style="color:#FFFFFF">Previous</a></td>
<td width="50%" align="right"><a href="<?php echo "?month=". $next_month . "&year=" . $next_year; ?>" style="color:#FFFFFF">Next</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center">
<table width="100%" cellpadding="2" cellspacing="2" border="1">
<tr align="center">
<td colspan="7" bgcolor="#999999" style="color:#FFFFFF"><strong><?php echo $monthNames[$cMonth-1].' '.$cYear; ?></strong></td>
</tr>
<tr>
<th><strong>S</strong></th>
<th><strong>M</strong></th>
<th><strong>T</strong></th>
<th><strong>W</strong></th>
<th><strong>T</strong></th>
<th><strong>F</strong></th>
<th><strong>S</strong></th>
</tr>
<?php
$timestamp = mktime(0,0,0,$cMonth,1,$cYear);
$maxday = date("t",$timestamp);
$thismonth = getdate ($timestamp);
$startday = $thismonth['wday'];
for ($i=0; $i<($maxday+$startday); $i++) {
if(($i % 7) == 0 ) echo "<tr>";
if($i < $startday) echo "<td></td>";
else echo "<td align='center' valign='middle' height='20px'>". ($i - $startday + 1) . "</td>";
if(($i % 7) == 6 ) echo "</tr>";
}
?>
</table>
</td>
</tr>
</table>
Так что, чтобы разбить его еще раз, мне нужно вставить $url
в календарь, где start
дата соответствует правильной дате в календаре, но только если не soldout
. Если soldout
равно true, то, вероятно, оно должно просто echo "SoldOut";
или оставить пустым, что-то в этом роде. Любая помощь в правильном направлении для получения информации в календаре была бы отличной.