PHP Need to recursively reverse an array

后端 未结 3 699
遇见更好的自我
遇见更好的自我 2021-01-21 12:57

I need to recursively reverse a HUGE array that has many levels of sub arrays, and I need to preserve all of the keys (which some are int keys, and some are string keys), can so

3条回答
  •  青春惊慌失措
    2021-01-21 13:53

    Reversing a HUGE php array in situ (but not recursively):

    function arrayReverse(&$arr){
      if (!is_array($arr) || empty($arr)) {
        return;
      }
      $rev = array();
      while ( false !== ( $val = end($arr) ) ){
        $rev[ key($arr) ] = $val;
        unset( $arr[ key($arr) ] );
      }
      $arr = $rev;
    }
    //usage
    $test = array(5, 'c'=>100, 10, 15, 20);
    arrayReverse($test);
    var_export($test);
    // result: array ( 3 => 20, 2 => 15, 1 => 10, 'c' => 100, 0 => 5, )
    

提交回复
热议问题