3v4l.org

run code in 300+ PHP versions simultaneously
<?php error_reporting(-1); mb_internal_encoding('UTF-8'); $amount = 54500; $totalCash = 0; $bills = array( 5000 => 200, 1000 => 0, 500 => 5, 100 => 23 ); foreach ($bills as $faceValue => $totalNumberOfBills) { $totalCash += $faceValue * $totalNumberOfBills; } echo "Сумма: {$amount}\n"; if ($amount > $totalCash) { echo "Выдача невозможна: В банкомате отсутствует требуемая сумма.\n"; } elseif ($amount % 100 != 0) { echo "Выдача невозможна: Запрошена неверная сумма (сумма должна быть кратна 100 рублям).\n"; } elseif ($amount <= 0) { echo "Выдача невозможна: Запрошена сумма меньше или равна нуля.\n"; } else { foreach ($bills as $faceValue => $totalNumberOfBills) { /* Кол-во купюр каждого номинала исходя из запрашиваемой суммы */ $numberOfBills = floor($amount / $faceValue); /* Проверка наличия требуемого количества купюр в АТМ */ if ($numberOfBills > $totalNumberOfBills) { $numberOfBills = $totalNumberOfBills; } /* Вычитаем сумму нужных купюр и сохраняем кол-во нужных купюр в отдельный массив */ $amount -= $numberOfBills * $faceValue; $result[] = $numberOfBills; } /* Если в итоге сумма не станет равной нулю, значить в АТМ нет купюр нужного номинала */ if ($amount != 0) { echo "Выдача невозможна: В банкомате отсутствуют купюры нужного номинала."; } else { /* Если сумма равна 0, то АТМ выдает нужную сумму */ echo "Выдача возможна, число купюр:\n"; $result = array_combine($result, array_flip($bills)); foreach ($result as $key => $value) { if ($key != 0) { echo "{$key}x{$value} "; } } } }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 10, Position 2 = 15
Branch analysis from position: 10
2 jumps found. (Code = 78) Position 1 = 11, Position 2 = 15
Branch analysis from position: 11
1 jumps found. (Code = 42) Position 1 = 10
Branch analysis from position: 10
Branch analysis from position: 15
2 jumps found. (Code = 43) Position 1 = 22, Position 2 = 24
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 75
Branch analysis from position: 75
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 24
2 jumps found. (Code = 43) Position 1 = 27, Position 2 = 29
Branch analysis from position: 27
1 jumps found. (Code = 42) Position 1 = 75
Branch analysis from position: 75
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 31, Position 2 = 33
Branch analysis from position: 31
1 jumps found. (Code = 42) Position 1 = 75
Branch analysis from position: 75
Branch analysis from position: 33
2 jumps found. (Code = 77) Position 1 = 34, Position 2 = 49
Branch analysis from position: 34
2 jumps found. (Code = 78) Position 1 = 35, Position 2 = 49
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 43, Position 2 = 44
Branch analysis from position: 43
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 44
Branch analysis from position: 49
2 jumps found. (Code = 43) Position 1 = 52, Position 2 = 54
Branch analysis from position: 52
1 jumps found. (Code = 42) Position 1 = 75
Branch analysis from position: 75
Branch analysis from position: 54
2 jumps found. (Code = 77) Position 1 = 64, Position 2 = 74
Branch analysis from position: 64
2 jumps found. (Code = 78) Position 1 = 65, Position 2 = 74
Branch analysis from position: 65
2 jumps found. (Code = 43) Position 1 = 68, Position 2 = 73
Branch analysis from position: 68
1 jumps found. (Code = 42) Position 1 = 64
Branch analysis from position: 64
Branch analysis from position: 73
Branch analysis from position: 74
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 74
Branch analysis from position: 49
Branch analysis from position: 15
filename:       /in/bs6hv
function name:  (null)
number of ops:  76
compiled vars:  !0 = $amount, !1 = $totalCash, !2 = $bills, !3 = $totalNumberOfBills, !4 = $faceValue, !5 = $numberOfBills, !6 = $result, !7 = $value, !8 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL                                               'error_reporting'
          1        SEND_VAL                                                 -1
          2        DO_ICALL                                                 
    4     3        INIT_FCALL                                               'mb_internal_encoding'
          4        SEND_VAL                                                 'UTF-8'
          5        DO_ICALL                                                 
    6     6        ASSIGN                                                   !0, 54500
    7     7        ASSIGN                                                   !1, 0
    9     8        ASSIGN                                                   !2, <array>
   16     9      > FE_RESET_R                                       $14     !2, ->15
         10    > > FE_FETCH_R                                       ~15     $14, !3, ->15
         11    >   ASSIGN                                                   !4, ~15
   17    12        MUL                                              ~17     !4, !3
         13        ASSIGN_OP                                     1          !1, ~17
   16    14      > JMP                                                      ->10
         15    >   FE_FREE                                                  $14
   20    16        ROPE_INIT                                     3  ~20     '%D0%A1%D1%83%D0%BC%D0%BC%D0%B0%3A+'
         17        ROPE_ADD                                      1  ~20     ~20, !0
         18        ROPE_END                                      2  ~19     ~20, '%0A'
         19        ECHO                                                     ~19
   22    20        IS_SMALLER                                               !1, !0
         21      > JMPZ                                                     ~22, ->24
   23    22    >   ECHO                                                     '%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0+%D0%BD%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0%3A+%D0%92+%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%BC%D0%B0%D1%82%D0%B5+%D0%BE%D1%82%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82+%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D0%BC%D0%B0%D1%8F+%D1%81%D1%83%D0%BC%D0%BC%D0%B0.%0A'
         23      > JMP                                                      ->75
   24    24    >   MOD                                              ~23     !0, 100
         25        IS_NOT_EQUAL                                             ~23, 0
         26      > JMPZ                                                     ~24, ->29
   25    27    >   ECHO                                                     '%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0+%D0%BD%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0%3A+%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%88%D0%B5%D0%BD%D0%B0+%D0%BD%D0%B5%D0%B2%D0%B5%D1%80%D0%BD%D0%B0%D1%8F+%D1%81%D1%83%D0%BC%D0%BC%D0%B0+%28%D1%81%D1%83%D0%BC%D0%BC%D0%B0+%D0%B4%D0%BE%D0%BB%D0%B6%D0%BD%D0%B0+%D0%B1%D1%8B%D1%82%D1%8C+%D0%BA%D1%80%D0%B0%D1%82%D0%BD%D0%B0+100+%D1%80%D1%83%D0%B1%D0%BB%D1%8F%D0%BC%29.%0A'
         28      > JMP                                                      ->75
   26    29    >   IS_SMALLER_OR_EQUAL                                      !0, 0
         30      > JMPZ                                                     ~25, ->33
   27    31    >   ECHO                                                     '%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0+%D0%BD%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0%3A+%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%88%D0%B5%D0%BD%D0%B0+%D1%81%D1%83%D0%BC%D0%BC%D0%B0+%D0%BC%D0%B5%D0%BD%D1%8C%D1%88%D0%B5+%D0%B8%D0%BB%D0%B8+%D1%80%D0%B0%D0%B2%D0%BD%D0%B0+%D0%BD%D1%83%D0%BB%D1%8F.%0A'
         32      > JMP                                                      ->75
   29    33    > > FE_RESET_R                                       $26     !2, ->49
         34    > > FE_FETCH_R                                       ~27     $26, !3, ->49
         35    >   ASSIGN                                                   !4, ~27
   31    36        INIT_FCALL                                               'floor'
         37        DIV                                              ~29     !0, !4
         38        SEND_VAL                                                 ~29
         39        DO_ICALL                                         $30     
         40        ASSIGN                                                   !5, $30
   33    41        IS_SMALLER                                               !3, !5
         42      > JMPZ                                                     ~32, ->44
   34    43    >   ASSIGN                                                   !5, !3
   37    44    >   MUL                                              ~34     !5, !4
         45        ASSIGN_OP                                     2          !0, ~34
   38    46        ASSIGN_DIM                                               !6
         47        OP_DATA                                                  !5
   29    48      > JMP                                                      ->34
         49    >   FE_FREE                                                  $26
   41    50        IS_NOT_EQUAL                                             !0, 0
         51      > JMPZ                                                     ~37, ->54
   42    52    >   ECHO                                                     '%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0+%D0%BD%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0%3A+%D0%92+%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%BC%D0%B0%D1%82%D0%B5+%D0%BE%D1%82%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%82+%D0%BA%D1%83%D0%BF%D1%8E%D1%80%D1%8B+%D0%BD%D1%83%D0%B6%D0%BD%D0%BE%D0%B3%D0%BE+%D0%BD%D0%BE%D0%BC%D0%B8%D0%BD%D0%B0%D0%BB%D0%B0.'
         53      > JMP                                                      ->75
   45    54    >   ECHO                                                     '%D0%92%D1%8B%D0%B4%D0%B0%D1%87%D0%B0+%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0%2C+%D1%87%D0%B8%D1%81%D0%BB%D0%BE+%D0%BA%D1%83%D0%BF%D1%8E%D1%80%3A%0A'
   46    55        INIT_FCALL                                               'array_combine'
         56        SEND_VAR                                                 !6
         57        INIT_FCALL                                               'array_flip'
         58        SEND_VAR                                                 !2
         59        DO_ICALL                                         $38     
         60        SEND_VAR                                                 $38
         61        DO_ICALL                                         $39     
         62        ASSIGN                                                   !6, $39
   47    63      > FE_RESET_R                                       $41     !6, ->74
         64    > > FE_FETCH_R                                       ~42     $41, !7, ->74
         65    >   ASSIGN                                                   !8, ~42
   48    66        IS_NOT_EQUAL                                             !8, 0
         67      > JMPZ                                                     ~44, ->73
   49    68    >   ROPE_INIT                                     4  ~46     !8
         69        ROPE_ADD                                      1  ~46     ~46, 'x'
         70        ROPE_ADD                                      2  ~46     ~46, !7
         71        ROPE_END                                      3  ~45     ~46, '+'
         72        ECHO                                                     ~45
   47    73    > > JMP                                                      ->64
         74    >   FE_FREE                                                  $41
   53    75    > > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
178.66 ms | 1404 KiB | 23 Q