Search code examples
phparraysfilteringassociative-array

Get all values from a flat associative array from a start key to an end key


How can I find all values between two array items (including start and end value)?

Example:

array('3X' => '3X','EX'=> 'EX','VG'=>'VG','G'=>'G','F'=>'F','P'=>'P')

Input: $arr, 'EX', 'F'

Output: 'EX', 'VG', 'G', 'F'


Solution

  • $array = array('3X' => '3X','EX'=> 'EX','VG'=>'VG','G'=>'G','F'=>'F','P'=>'P');
    $start = "3X";
    $end ="F";
    $new_array = [];
    $i=0;$go=false;
    foreach ($array as $element) {
        if($go){
            $new_array[$i] = $element; 
            $i++;
        }
        if($element==$start){
            $go = true;
        }
        if($element==$end){
            $go = false;
        }
    }
    $total_elems_new = count($new_array);
    unset($new_array[$total_elems_new-1]);
    print_r($new_array);
    

    Testeed on PHP 5.6