3v4l.org

run code in 500+ PHP versions simultaneously
<?php $persons = '[ {"FrstName":"Henry","Middlename":"","LastName":"Walton","Online":true,"DeptId":"4"}, {"FrstName":"Klaus","Middlename":"","LastName":"Mikaelson","Online":true,"DeptId":"2"}, {"FrstName":"Kylo","Middlename":"","LastName":"Ren","Online":false,"DeptId":"4"}, {"FrstName":"Stan","Middlename":"","LastName":"Lee","Online":false,"DeptId":"3"}, {"FrstName":"Kevin","Middlename":"","LastName":"McNally","Online":false,"DeptId":"3"}, {"FrstName":"Katherine","Middlename":"","LastName":"Pierce","Online":false,"DeptId":"2"}, {"FrstName":"Clint","Middlename":"","LastName":"Barton","Online":true,"DeptId":"3"}, {"FrstName":"Avery","Middlename":"","LastName":"Walton","Online":true,"DeptId":"4"}, {"FrstName":"Peter","Middlename":"","LastName":"Kap","Online":true,"DeptId":"2"}, {"FrstName":"Denzo","Middlename":"","LastName":"Falc","Online":false,"DeptId":"4"}, {"FrstName":"Eveline","Middlename":"","LastName":"Benzel","Online":false,"DeptId":"3"}, {"FrstName":"Bill","Middlename":"","LastName":"Libuz","Online":false,"DeptId":"3"}, {"FrstName":"April","Middlename":"","LastName":"Gonzo","Online":false,"DeptId":"2"}, {"FrstName":"Harry","Middlename":"","LastName":"Geraldson","Online":true,"DeptId":"3"}, {"FrstName":"Heraldson","Middlename":"","LastName":"McGree","Online":false,"DeptId":"3"}, {"FrstName":"Abraham","Middlename":"","LastName":"Retz","Online":true,"DeptId":"4"}, {"FrstName":"June","Middlename":"","LastName":"Pharee","Online":true,"DeptId":"2"}, {"FrstName":"Anthony","Middlename":"","LastName":"Gonzales","Online":false,"DeptId":"4"}, {"FrstName":"Billy","Middlename":"","LastName":"Scott","Online":false,"DeptId":"3"}, {"FrstName":"Anika","Middlename":"","LastName":"Rose","Online":false,"DeptId":"3"}, {"FrstName":"Kristen","Middlename":"","LastName":"Fontana","Online":false,"DeptId":"2"}, {"FrstName":"Olivia","Middlename":"","LastName":"Menzel","Online":true,"DeptId":"3"}, {"FrstName":"Mark","Middlename":"van","LastName":"Gad","Online":false,"DeptId":"3"}, {"FrstName":"Hope","Middlename":"van","LastName":"Dyne","Online":false,"DeptId":"3"} ]'; // Make the JSON an array, so count() and array_slice() work $persons = json_decode($persons, true); $page = ! empty( $_GET['page'] ) ? (int) $_GET['page'] : 1; $total = count( $persons ); //total items in array // $limit = 10; //per page // Set limit to 3 for testing: $limit = 3; $totalPages = ceil( $total/ $limit ); //calculate total pages $page = max($page, 1); //get 1 page when $_GET['page'] <= 0 $page = min($page, $totalPages); //get last page when $_GET['page'] > $totalPages // Uncomment this for testing // $page = 2; $offset = ($page - 1) * $limit; if( $offset < 0 ) $offset = 0; $yourDataArray = array_slice( $persons, $offset, $limit ); $link = 'index.php?page=%d'; $pagerContainer = '<div style="width: 300px;">'; if( $totalPages != 0 ) { if( $page == 1 ) { $pagerContainer .= ''; } else { $pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> &#171; prev page</a>', $page - 1 ); } $pagerContainer .= ' <span> page <strong>' . $page . '</strong> from ' . $totalPages . '</span>'; if( $page == $totalPages ) { $pagerContainer .= ''; } else { $pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> next page &#187; </a>', $page + 1 ); } } $pagerContainer .= '</div>'; echo $pagerContainer; foreach($yourDataArray as $person) { echo "\n"; echo "First name: " . $person['FrstName']; echo " - Middle name: " . $person['Middlename']; echo " - Last name: " . $person['LastName']; echo " - Online: " . $person['Online']; echo " - Dept: " . $person['DeptId']; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 10, Position 2 = 15
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 34, Position 2 = 35
Branch analysis from position: 34
2 jumps found. (Code = 43) Position 1 = 45, Position 2 = 74
Branch analysis from position: 45
2 jumps found. (Code = 43) Position 1 = 47, Position 2 = 49
Branch analysis from position: 47
1 jumps found. (Code = 42) Position 1 = 57
Branch analysis from position: 57
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 66
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 74
Branch analysis from position: 74
2 jumps found. (Code = 77) Position 1 = 77, Position 2 = 95
Branch analysis from position: 77
2 jumps found. (Code = 78) Position 1 = 78, Position 2 = 95
Branch analysis from position: 78
1 jumps found. (Code = 42) Position 1 = 77
Branch analysis from position: 77
Branch analysis from position: 95
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 95
Branch analysis from position: 66
2 jumps found. (Code = 77) Position 1 = 77, Position 2 = 95
Branch analysis from position: 77
Branch analysis from position: 95
Branch analysis from position: 49
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 66
Branch analysis from position: 64
Branch analysis from position: 66
Branch analysis from position: 74
Branch analysis from position: 35
Branch analysis from position: 15
2 jumps found. (Code = 43) Position 1 = 34, Position 2 = 35
Branch analysis from position: 34
Branch analysis from position: 35
filename:       /in/8hR84
function name:  (null)
number of ops:  97
compiled vars:  !0 = $persons, !1 = $page, !2 = $total, !3 = $limit, !4 = $totalPages, !5 = $offset, !6 = $yourDataArray, !7 = $link, !8 = $pagerContainer, !9 = $person
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, '%5B+%0A%7B%22FrstName%22%3A%22Henry%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Walton%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%224%22%7D%2C%0A%7B%22FrstName%22%3A%22Klaus%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Mikaelson%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%222%22%7D%2C%0A%7B%22FrstName%22%3A%22Kylo%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Ren%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%224%22%7D%2C%0A%7B%22FrstName%22%3A%22Stan%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Lee%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Kevin%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22McNally%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Katherine%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Pierce%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%222%22%7D%2C%0A%7B%22FrstName%22%3A%22Clint%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Barton%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Avery%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Walton%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%224%22%7D%2C%0A%7B%22FrstName%22%3A%22Peter%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Kap%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%222%22%7D%2C%0A%7B%22FrstName%22%3A%22Denzo%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Falc%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%224%22%7D%2C%0A%7B%22FrstName%22%3A%22Eveline%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Benzel%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Bill%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Libuz%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22April%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Gonzo%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%222%22%7D%2C%0A%7B%22FrstName%22%3A%22Harry%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Geraldson%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Heraldson%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22McGree%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Abraham%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Retz%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%224%22%7D%2C%0A%7B%22FrstName%22%3A%22June%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Pharee%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%222%22%7D%2C%0A%7B%22FrstName%22%3A%22Anthony%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Gonzales%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%224%22%7D%2C%0A%7B%22FrstName%22%3A%22Billy%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Scott%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Anika%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Rose%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Kristen%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Fontana%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%222%22%7D%2C%0A%7B%22FrstName%22%3A%22Olivia%22%2C%22Middlename%22%3A%22%22%2C%22LastName%22%3A%22Menzel%22%2C%22Online%22%3Atrue%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Mark%22%2C%22Middlename%22%3A%22van%22%2C%22LastName%22%3A%22Gad%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%2C%0A%7B%22FrstName%22%3A%22Hope%22%2C%22Middlename%22%3A%22van%22%2C%22LastName%22%3A%22Dyne%22%2C%22Online%22%3Afalse%2C%22DeptId%22%3A%223%22%7D%0A%5D'
   31     1        INIT_FCALL                                                   'json_decode'
          2        SEND_VAR                                                     !0
          3        SEND_VAL                                                     <true>
          4        DO_ICALL                                             $11     
          5        ASSIGN                                                       !0, $11
   33     6        FETCH_IS                                             ~13     '_GET'
          7        ISSET_ISEMPTY_DIM_OBJ                             1  ~14     ~13, 'page'
          8        BOOL_NOT                                             ~15     ~14
          9      > JMPZ                                                         ~15, ->15
         10    >   FETCH_R                          global              ~16     '_GET'
         11        FETCH_DIM_R                                          ~17     ~16, 'page'
         12        CAST                                              4  ~18     ~17
         13        QM_ASSIGN                                            ~19     ~18
         14      > JMP                                                          ->16
         15    >   QM_ASSIGN                                            ~19     1
         16    >   ASSIGN                                                       !1, ~19
   34    17        COUNT                                                ~21     !0
         18        ASSIGN                                                       !2, ~21
   37    19        ASSIGN                                                       !3, 3
   38    20        INIT_FCALL                                                   'ceil'
         21        DIV                                                  ~24     !2, !3
         22        SEND_VAL                                                     ~24
         23        DO_ICALL                                             $25     
         24        ASSIGN                                                       !4, $25
   39    25        FRAMELESS_ICALL_2                max                 ~27     !1, 1
         26        ASSIGN                                                       !1, ~27
   40    27        FRAMELESS_ICALL_2                min                 ~29     !1, !4
         28        ASSIGN                                                       !1, ~29
   43    29        SUB                                                  ~31     !1, 1
         30        MUL                                                  ~32     !3, ~31
         31        ASSIGN                                                       !5, ~32
   44    32        IS_SMALLER                                                   !5, 0
         33      > JMPZ                                                         ~34, ->35
         34    >   ASSIGN                                                       !5, 0
   46    35    >   INIT_FCALL                                                   'array_slice'
         36        SEND_VAR                                                     !0
         37        SEND_VAR                                                     !5
         38        SEND_VAR                                                     !3
         39        DO_ICALL                                             $36     
         40        ASSIGN                                                       !6, $36
   49    41        ASSIGN                                                       !7, 'index.php%3Fpage%3D%25d'
   50    42        ASSIGN                                                       !8, '%3Cdiv+style%3D%22width%3A+300px%3B%22%3E'
   51    43        IS_NOT_EQUAL                                                 !4, 0
         44      > JMPZ                                                         ~40, ->74
   53    45    >   IS_EQUAL                                                     !1, 1
         46      > JMPZ                                                         ~41, ->49
   55    47    >   ASSIGN_OP                                         8          !8, ''
   53    48      > JMP                                                          ->57
   59    49    >   INIT_FCALL                                                   'sprintf'
         50        CONCAT                                               ~43     '%3Ca+href%3D%22', !7
         51        CONCAT                                               ~44     ~43, '%22+style%3D%22color%3A+%23c00%22%3E+%26%23171%3B+prev+page%3C%2Fa%3E'
         52        SEND_VAL                                                     ~44
         53        SUB                                                  ~45     !1, 1
         54        SEND_VAL                                                     ~45
         55        DO_ICALL                                             $46     
         56        ASSIGN_OP                                         8          !8, $46
   61    57    >   CONCAT                                               ~48     '+%3Cspan%3E+page+%3Cstrong%3E', !1
         58        CONCAT                                               ~49     ~48, '%3C%2Fstrong%3E+from+'
         59        CONCAT                                               ~50     ~49, !4
         60        CONCAT                                               ~51     ~50, '%3C%2Fspan%3E'
         61        ASSIGN_OP                                         8          !8, ~51
   62    62        IS_EQUAL                                                     !1, !4
         63      > JMPZ                                                         ~53, ->66
   64    64    >   ASSIGN_OP                                         8          !8, ''
   62    65      > JMP                                                          ->74
   68    66    >   INIT_FCALL                                                   'sprintf'
         67        CONCAT                                               ~55     '%3Ca+href%3D%22', !7
         68        CONCAT                                               ~56     ~55, '%22+style%3D%22color%3A+%23c00%22%3E+next+page+%26%23187%3B+%3C%2Fa%3E'
         69        SEND_VAL                                                     ~56
         70        ADD                                                  ~57     !1, 1
         71        SEND_VAL                                                     ~57
         72        DO_ICALL                                             $58     
         73        ASSIGN_OP                                         8          !8, $58
   71    74    >   ASSIGN_OP                                         8          !8, '%3C%2Fdiv%3E'
   73    75        ECHO                                                         !8
   75    76      > FE_RESET_R                                           $61     !6, ->95
         77    > > FE_FETCH_R                                                   $61, !9, ->95
   76    78    >   ECHO                                                         '%0A'
   77    79        FETCH_DIM_R                                          ~62     !9, 'FrstName'
         80        CONCAT                                               ~63     'First+name%3A+', ~62
         81        ECHO                                                         ~63
   78    82        FETCH_DIM_R                                          ~64     !9, 'Middlename'
         83        CONCAT                                               ~65     '+-+Middle+name%3A+', ~64
         84        ECHO                                                         ~65
   79    85        FETCH_DIM_R                                          ~66     !9, 'LastName'
         86        CONCAT                                               ~67     '+-+Last+name%3A+', ~66
         87        ECHO                                                         ~67
   80    88        FETCH_DIM_R                                          ~68     !9, 'Online'
         89        CONCAT                                               ~69     '+-+Online%3A+', ~68
         90        ECHO                                                         ~69
   81    91        FETCH_DIM_R                                          ~70     !9, 'DeptId'
         92        CONCAT                                               ~71     '+-+Dept%3A+', ~70
         93        ECHO                                                         ~71
   75    94      > JMP                                                          ->77
         95    >   FE_FREE                                                      $61
   82    96      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
172.56 ms | 2155 KiB | 17 Q