No no, ahí hay unas cuantas cosas mal. A ver, una función es un trozo de código que quieres repetir (en ocasiones con unos parámetros de entrada específicos), por lo tanto, para entenderlas de primeras piensa que dentro de una función NO puedes definir otra función, pero sí puedes llamar a otras funciones que tengas definidas (nota: creo que sí puedes definir una función dentro de otra en la teoría, pero para casos mucho más especiales y avanzados y yo nunca lo he llegado a usar. Para el caso, piensa que no se puede).
En tu código estás definiendo calcula_extension y dentro de ella te pones a definir tipo_fichero y esto ya hemos comentado que no se puede hacer. Quitando esto, la primera función hace lo que quieres si le quitamos la definición de la segunda:
Ahora bien, $extension_extraida y $extension_sinpunto se pierden al terminar la función, pues no las imprimes por pantalla ni las devuelves ni haces nada con ellas, por lo que no te sirve. Y las variables $extension y $tipo tampoco las usas aquí, por lo que no te sirven.
Por otra parte, esta función queda muy limitada a que sólo puede calcular la extensión del fichero curriculum.pdf, y eso implica que no te va a servir de nada más. El concepto de función es otro, por tanto, deberías pasarle por parámetro el nombre del fichero. Con todo esto, tenemos ahora esta función así:
Simple. Esa función recibe el nombre de un fichero (está entre los parámetros en la definición de la función) y devuelve la extensión sin el punto. Así luego la puedes llamar todas las veces que quieras de esta forma:
Esto te imprimiría por pantalla lo siguiente:
Ya tienes cómo obtener la extensión, entonces.
En la otra función tenías más errores. De primeras, tienes una variable $a que no está definida en ningún sitio, por lo que te daría error. Te propongo otra solución más cómoda, fíjate:
Es sencillo. Primero creas un array en el que el índice es la extensión y el valor es el texto que quieres. Luego fíjate que le hemos pasado por parámetro la extensión. Por tanto, devuelves $tipo[$extension] que, por ejemplo si es "pdf", devolverías $tipo["pdf"], o sea, devolverías el texto "Documento Adobe PDF", que es lo que quieres.
Pero, ¿y si la extensión no es ninguna de esas? Pues lo vamos a arreglar comprobando antes si existe:
Con array_key_exists comprobamos que $extension es uno de los índices de $tipo y, si es así, devolvemos su valor. Si no es así pasará por el return "", por lo que devolverá la cadena vacía.
Luego lo estás mostrando en una tabla, pero te aconsejo que intentes separar el código PHP de lo que es el HTML todo lo que puedas. Al final, te quedaría esto:
Tienes la lógica del programa en donde defines las dos funciones y luego las llamas para el fichero que has puesto (curriculum.pdf) y así obtienes el tipo del fichero que se guarda en $tipo_fichero. Luego cierras ese código PHP y empiezas con el HTML incrustando PHP allá donde lo necesites (para decidir si la extensión es conocida o no y el mensaje que se imprime).
Si necesitas alguna explicación más de ese código, coméntame y te digo.
-----------------------------
Aprende la programación desde una perspectiva básica y simplista en
Programación Básica