3v4l.org

run code in 300+ PHP versions simultaneously
<?php function generateAffiliateCommands(int $companyId, int $daysBack) { $sections = [ 'AFFILIATES' => [ "affiliate:cac-sync-affiliates %d", "affiliate:cac-sync-commission-plan-reports %d" ], 'COMMISSIONS' => [ "affiliate:cac-sync-commissions %d --dateFrom=\\\"%s\\\" --dateTo=\\\"%s\\\"" ], 'REGISTRATIONS' => [ "affiliate:cac-sync-registrations %d --dateFrom=\\\"%s\\\" --dateTo=\\\"%s\\\"" ], 'TRANSACTIONS' => [ "affiliate:cac-sync-transactions %d --dateFrom=\\\"%s\\\" --dateTo=\\\"%s\\\"" ] ]; $commands = []; // AFFILIATES section $commands[] = "## AFFILIATES ##"; $affiliateCmds = []; foreach ($sections['AFFILIATES'] as $index => $cmd) { $formatted = sprintf($cmd, $companyId); if ($index > 0) { $formatted = "php artisan $formatted"; } $affiliateCmds[] = $formatted; } $commands[] = implode(' && ', $affiliateCmds); // Generate 30-day periods starting from -1 backwards $periods = []; $chunkSize = 30; $currentTo = -1; while (abs($currentTo) < $daysBack) { $currentFrom = $currentTo - $chunkSize + 1; // Ensure we don’t go beyond -daysBack if (abs($currentFrom) > $daysBack) { $currentFrom = -$daysBack; } $periods[] = [$currentFrom, $currentTo]; // Next chunk ends where this one starts $currentTo = $currentFrom - 1; } // Flip to oldest first (-daysBack → -1) $periods = array_reverse($periods); // Generate other sections foreach (['COMMISSIONS', 'REGISTRATIONS', 'TRANSACTIONS'] as $section) { $commands[] = "## $section ##"; $sectionCmds = []; foreach ($periods as $i => [$from, $to]) { if ($to !== -1) { $to = $to + 1; } $cmd = sprintf($sections[$section][0], $companyId, "$from days", "$to days"); if ($i > 0) { $cmd = "php artisan $cmd"; } $sectionCmds[] = $cmd; } $commands[] = implode(' && ', $sectionCmds); } return implode("\n\n", $commands); } function dateToDaysAgo(string $date) { // Create DateTime objects $given = new DateTime($date); $now = new DateTime(); // current date and time // Calculate difference $diff = $now->diff($given); // Total days difference $daysAgo = $diff->days; // If the given date is in the past, return negative if ($given < $now) { return $daysAgo + 1; } else { return -$daysAgo - 1; } } $companyId = 223; $date = '2024-11-13 15:44:50'; echo generateAffiliateCommands($companyId, dateToDaysAgo($date));
Output for git.master_jit, git.master
## AFFILIATES ## affiliate:cac-sync-affiliates 223 && php artisan affiliate:cac-sync-commission-plan-reports 223 ## COMMISSIONS ## affiliate:cac-sync-commissions 223 --dateFrom=\"-440 days\" --dateTo=\"-420 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-420 days\" --dateTo=\"-390 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-390 days\" --dateTo=\"-360 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-360 days\" --dateTo=\"-330 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-330 days\" --dateTo=\"-300 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-300 days\" --dateTo=\"-270 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-270 days\" --dateTo=\"-240 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-240 days\" --dateTo=\"-210 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-210 days\" --dateTo=\"-180 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-180 days\" --dateTo=\"-150 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-150 days\" --dateTo=\"-120 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-120 days\" --dateTo=\"-90 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-90 days\" --dateTo=\"-60 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-60 days\" --dateTo=\"-30 days\" && php artisan affiliate:cac-sync-commissions 223 --dateFrom=\"-30 days\" --dateTo=\"-1 days\" ## REGISTRATIONS ## affiliate:cac-sync-registrations 223 --dateFrom=\"-440 days\" --dateTo=\"-420 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-420 days\" --dateTo=\"-390 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-390 days\" --dateTo=\"-360 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-360 days\" --dateTo=\"-330 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-330 days\" --dateTo=\"-300 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-300 days\" --dateTo=\"-270 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-270 days\" --dateTo=\"-240 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-240 days\" --dateTo=\"-210 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-210 days\" --dateTo=\"-180 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-180 days\" --dateTo=\"-150 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-150 days\" --dateTo=\"-120 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-120 days\" --dateTo=\"-90 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-90 days\" --dateTo=\"-60 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-60 days\" --dateTo=\"-30 days\" && php artisan affiliate:cac-sync-registrations 223 --dateFrom=\"-30 days\" --dateTo=\"-1 days\" ## TRANSACTIONS ## affiliate:cac-sync-transactions 223 --dateFrom=\"-440 days\" --dateTo=\"-420 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-420 days\" --dateTo=\"-390 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-390 days\" --dateTo=\"-360 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-360 days\" --dateTo=\"-330 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-330 days\" --dateTo=\"-300 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-300 days\" --dateTo=\"-270 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-270 days\" --dateTo=\"-240 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-240 days\" --dateTo=\"-210 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-210 days\" --dateTo=\"-180 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-180 days\" --dateTo=\"-150 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-150 days\" --dateTo=\"-120 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-120 days\" --dateTo=\"-90 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-90 days\" --dateTo=\"-60 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-60 days\" --dateTo=\"-30 days\" && php artisan affiliate:cac-sync-transactions 223 --dateFrom=\"-30 days\" --dateTo=\"-1 days\"

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
29.03 ms | 425 KiB | 5 Q