3v4l.org

run code in 300+ PHP versions simultaneously
<?php $states = ["AGGR", "NOMOVE", "COWARD", "NOATTSHINSU", "NOATTCHUNJO", "NOATTJINNO", "ATTMOB", "BERSERK", "STONESKIN", "GODSPEED", "DEATHBLOW", "REVIVE"]; $samples = ["AGGR", "AGGR,BERSERK", "AGGR,BERSERK,DEATHBLOW,REVIVE", "AGGR,BERSERK,STONESKIN", "AGGR,BERSERK,STONESKIN,DEATHBLOW", "AGGR,BERSERK,STONESKIN,DEATHBLOW,REVIVE", "AGGR,BERSERK,STONESKIN,DEATHBLOW,REVIVE", "AGGR,DEATHBLOW", "AGGR,GODSPEED", "AGGR,GODSPEED", "AGGR,NOATTCHUNJO", "AGGR,NOATTJINNO", "AGGR,NOATTSHINSU", "AGGR,NOMOVE", "AGGR,REVIVE", "AGGR,STONESKIN", "BERSERK", "BERSERK,STONESKIN", "COWARD", "NOMOVE", "AGGR,NOMOVE,BERSERK,GODSPEED,DEATHBLOW", "NOMOVE,STONESKIN", "NOMOVE,STONESKIN", "REVIVE"]; function states2flags($userStates, $allStates) { $userFlags = 0; $bit = 1; foreach ($allStates as $state) { if (in_array($state, $userStates)) { $userFlags += $bit; } $bit <<= 1; } return $userFlags; } function flags2states($userFlags, $allStates) { $userStates = []; $bit = 1; foreach ($allStates as $state) { if ($userFlags & $bit) { $userStates[] = $state; } $bit <<= 1; } return $userStates; } foreach($samples as $sample) { $sampleStates = explode(",", $sample); $sampleFlags = states2flags($sampleStates, $states); $reverseStates = flags2states($sampleFlags, $states); $reverseFlags = states2flags($reverseStates, $states); $textColor = (count(array_diff($sampleStates, $reverseStates)) > 0) ? "red" : "green"; echo '<a class="' . $textColor . '">' . $textColor . ' Original Data - <b>' . $sample . ' [' . $sampleFlags . ']</b> - Reverse Data - <b>' . implode(",", flags2states($sampleFlags, $states)) . ' ['.$reverseFlags. ']</b><br>'; }

preferences:
143.73 ms | 407 KiB | 5 Q