function arrays_equals($array1, $array2) { 
        $diff = array_diff_assoc($array1, $array2);
        if (!empty($diff)) {
            return false;
        }

        // loop to see if there are no arrays
        $equal = true;
        foreach ($array1 as $idx=>$val) {
            if (is_array($val)) {
                if (isset($array2[$idx])) {
                    $equal = $equal && arrays_equals($val, $array2[$idx]);
                } else {
                    return false;
                }
            }
        }
        foreach ($array2 as $idx=>$val) {
            if (is_array($val)) {
                if (isset($array1[$idx])) {
                    $equal = $equal && arrays_equals($val, $array1[$idx]);
                } else {
                    return false;
                }
            }
        }

        return $equal;
    }