在函数参数中仅使用数组是一种不好的做法?

I know a programmer that is using only arrays in PHP functions. I'm trying to explain that it turns the code illegible due I need to know what index to use to find values inside function.

PS: There is no documentation to know what indexes coa There is a sample:

public function aviso_cadastro_cotacao($params=array()){
    try{
        $conn = new Conexao();
        //$conn->beginTransaction();


        if($params['cotacao_modo_transporte'] == 'Rodoviário'){
            $params['cotacao_modo_transporte'] = 'Transporte Rodoviário';
        }




        include_once(CONTROLLER.'/Cotacao.php');
        $cotacao = new Cotacao();           
        //echo'<pre>';print_r($params);die;
        $params_get_cotacao['id'] = $params['cotacao_id'];
        $dados = $cotacao->getCotacao($params_get_cotacao);
        $params['cotacao_codigo'] = $dados[0]['codigo'];


        include_once(CONTROLLER.'/Empresa.php');
        $empresa = new Empresa();

        if($dados[0]['cidade_origem'] > 0){
            $cidade = $empresa->getCidades(array('id' => $dados[0]['cidade_origem'] ));
            $params['origem'] = ($cidade[0]['nome']);
        }else{
            $params['origem'] = $dados[0]['origem'];
        }

        if($dados[0]['cidade_destino'] > 0){
            $cidade = $empresa->getCidades(array('id' => $dados[0]['cidade_destino'] ));
            $params['destino'] = ($cidade[0]['nome']);
        }else{
            $params['destino'] = $dados[0]['destino'];
        }   


        //se rodoviário
        if($dados[0]['modo_transporte_id'] == 3){
            $params['origem']   = ($params['origem']);
            $params['destino']  = ($params['destino']);
        }else{
            $params['origem']   = utf8_decode($params['origem']);
            $params['destino']  = utf8_decode($params['destino']);
        }






        $modo_transporte = ($params['cotacao_modo_transporte']);

        //echo'<pre>';print_r($params);die; [CONTINUES..]