"January",2=>"February",3=>"March",4=>"April", 5=>"May",6=>"June",7=>"July",8=>"August", 9=>"September",10=>"October",11=>"November",12=>"December" ]; $monthEmoji = [ 1=>"❄ïļ",2=>"❄ïļ",3=>"ðŸŒą",4=>"ðŸŒļ",5=>"ðŸŒŋ",6=>"☀ïļ", 7=>"☀ïļ",8=>"ðŸŒŧ",9=>"🍂",10=>"🍂",11=>"🌧ïļ",12=>"❄ïļ" ]; $m = isset($_GET['m']) ? (int)$_GET['m'] : 1; if ($m < 1 || $m > 12) $m = 1; $prev = $m > 1 ? $m - 1 : 12; $next = $m < 12 ? $m + 1 : 1; $plants = []; if (file_exists($dataFile)) { $json = json_decode(file_get_contents($dataFile), true); if ($json && isset($json['plants'])) { foreach ($json['plants'] as $slug => $plant) { if (isset($plant['months'][strval($m)])) { $plants[$slug] = $plant; } } uksort($plants, fn($a,$b) => strcmp($plants[$a]['name'], $plants[$b]['name'])); } } function actionBadge($action) { $a = strtolower($action); if (strpos($a,'sow seed') !== false) return ['type'=>'sow', 'label'=>'Sow Seed', 'icon'=>'ðŸŒą']; if (strpos($a,'seed tray') !== false || strpos($a,'start in') !== false) return ['type'=>'tray', 'label'=>'Start in Trays','icon'=>'ðŸŠī']; if (strpos($a,'transplant') !== false || strpos($a,'plant out') !== false) return ['type'=>'transplant','label'=>'Transplant', 'icon'=>'ðŸŒŋ']; if (strpos($a,'tuber') !== false) return ['type'=>'tuber', 'label'=>'Plant Tubers', 'icon'=>'ðŸĨ”']; if (strpos($a,'crown') !== false) return ['type'=>'crown', 'label'=>'Plant Crowns', 'icon'=>'👑']; if (strpos($a,'clove') !== false) return ['type'=>'clove', 'label'=>'Plant Cloves', 'icon'=>'🧄']; return ['type'=>'general','label'=>'Plant','icon'=>'ðŸŒą']; } ?> <?= $months[$m] ?> Planting - Zone 8b
←

→
🌧ïļ No data for . Run the scraper first.

plants for in Zone 8b

$plant) { $b = actionBadge($plant['months'][strval($m)]); if (!in_array($b['type'], $seenTypes)) { $seenTypes[] = $b['type']; echo ""; } } ?>
$plant): $action = $plant['months'][strval($m)]; $badge = actionBadge($action); ?>
<?= htmlspecialchars($plant['name']) ?>
also:
ðŸŠī Pot-friendly