Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Código organizado

8/26
Recursos

El código organizado se refiere a cómo tenemos distribuido nuestros archivos en la raíz (root) del proyecto. A mayor organización, mayor entendimiento del código.

Aportes 191

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Esto es muy fácil cuándo trabajas con entornos de desarrollo sofisticados que agrupan los proyectos en librerías, de esta manera la programación en capas es más sencilla. Sin embargo, cuando trabajas con entornos que son mas libres, por ejemplo, si vas a desarrollar un proyecto con Python usando por ejemeplo Visual Studio Code, vas a tener que considerar crear una estructura de directorios que le de sentido a la organización de tu código. Para esto es importante crear categorías que nos permitan agrupar los ámbitos de nuestros archivos, es importante aquí la diagramación a través de herramientas que nos permitan organizar claramente cómo deberíamos construir nuestro proyecto, CMAP Tools es útil acá, y cualquier otro instrumento que permita crear mapas o diagramas como tal vez Visio. Es también importante tomar estas decisiones antes de comenzar a codificar el proyecto, esta es una decisión digamos de alto nivel.

Código organizado


Cuando hablamos de código organizado nos referimos a cómo está el código distribuido en nuestro sistema de archivos. Esto significa que necesitas organizar el código y que según cómo se llame el archivo, este adentro debe contener únicamente lo que su nombre indica.

Quiere decir, que agruparemos archivos que tengan un contenido similar en directorios.

⭐ Esto se trata de convención, no una imposición.

PHP ej:

  • /public
  • /src
  • /tests
  • /vendor

Mi codigo (No se mucho de php pero me gusto el reto)

<?php
    $numero = $_POST['Numero'];

    function calcularFactorial($factorial = 1, $numero) {
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }

    function multiplicarIteracion($numero, $i) {      
      return $numero * $i;
    }

    function imprimirIteracionNumeros($numero) {
      for ($i = 0; $i <= 10; $i++) {
        echo "<tr>"
        echo "<td>$numero * $i:></td>"
        echo "<td>" 
        echo multiplicarIteracion($numero, $i)
        echo "</td>"
        echo "</tr>"
      }
    }

    function imprimirNumeroFactorial($numero) {
      echo "<tr>"
      echo "<td>"
      echo calcularFactorial($numero)
      echo "</td>"
      echo "</tr>"
    }
?>
<table border="1">
    <?php
      imprimirIteracionNumeros($numero);
      imprimirNumeroFactorial($numero);
    ?>
</table>

Este es mi código:

<?php
    
    // Definición de funciones
    function multiplicar( $numero ) {
      
        $tabla = array();

        for($multiplicacion = 1; $multiplicacion <= 10; $multiplicacion++)
            $tabla["$numero x $multiplicacion"] = $numero * $multiplicacion;
            
        return $tabla;

    }
    
    function factorial( $numero ) {
        
        $factorial = 1;
        
        for ($numero_dado = $numero; $numero_dado >= 1; $numero_dado--)
            $factorial *= $numero_dado;
        
        return $factorial;
        
    }
    
    // Preparo las variables
    $numero = $_POST['Numero'];
    $tabla = multiplicar( $numero );
    $factorial = factorial( $numero );

?>

<table border="1">
    
    <?php foreach($tabla as $descripcion => $resultado): ?>
      <tr>
        <td><?= $descripcion ?></td>
        <td><?= $resultado ?></td>
      </tr>
    <?php endforeach; ?>
    
    <tr>
        <td><?= $numero ?>!</td>
        <td><?= $factorial ?></td>
    </tr>
    
</table>

No se nada de PHP.

En este articulo pueden revisar algunas buenas practicas, convenciones y sigerencias para organizar su codigo en JS:
https://medium.com/@davidenq/guía-de-estilo-convenciones-y-buenas-prácticas-de-desarrollo-con-javascript-d2e9ef80d63b

Dejo por aquí mi solución al reto

<?php
    $numero = $_POST['Numero'];
    imprimirTabla($numero);

    function tablaMultiplicar($numero)
    {
        for($i = 0; $i <= 10; $i++){
            imprimirFila(array("$numero x $i: ", $numero*$i));
        }
    }

    function factorial($numero)
    {
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        imprimirFila(array("$numero!", $factorial)); 
    }

    function imprimirFila($datos)
    {
        echo "<tr>";
        for($i = 0; $i < count($datos); $i++){
            echo "<td>$datos[$i]</td>";
        }
        echo "</tr>";
    }

    function imprimirTabla($numero)
    {
        echo '<table border="1"';
        tablaMultiplicar($numero);
        factorial($numero);
        echo '</table>';
    }
?>

Siempre tener en cuenta que cada framework o biblioteca tiene su propia organización de archivos recomendada. No es lo mismo una aplicación de frontend con React que una backend de FastAPI. Revisar la documentación del stack utilizado siempre es la mejor opción ~

/public

Archivos accesibles desde afuera del servidosr

/src

Archivos de nuestro proyecto

/test

Archivos de pruebas unitarias

/vendor

Archivos de librerías de terceros

Organizacion de codigo:

public/ reto2.html
src/reto2.php

/public: contendra todos los archivos que son accesibles directamente desde afuera del servidor
/src: contendrá todos los archivos propios de nuestro proyecto, es decir el código escrito por nosotros
/tests: tendrá las pruebas unitarias
/vendor: contendrá todos los archivos de librerías de terceros que este utilizando nuestro proyecto

Reto cumplido

Pude probar el código directamente en php, tiene razón el profesor un código así cuesta mucho entender, se nota la diferencia después de organizarlo, para quien se pregunta esto es lo que debe hacer el programa:

Código

<?php
    $numero =10;
    /**
     * Multiplica el numero ingresado por numeros del 1 al 10
     * @param int Numero a calcular
     */
    function multiplicacion($numero){
        for ($i = 1; $i <= 10; $i++){
             echo 
             "<tr>
                <td>  $numero x $i:  </td>
                <td>".$numero * $i." </tb>
             </tr>";
        }
    }
    /**
     * Deacuerdo al numero que se capturado se calcula su factorial 
     *  @param int NUmero a calcular  
     */
    function calcular_factorial($numero){
        $factorial = 1;
        $num_factorial = $numero - ($numero - 1 );
            for ($f = $numero; $f >= 1; $f--) {
                echo "<tr>
                        <td>" . $num_factorial++ ."! = </td>
                        <td>".$factorial *= $f."</td>
                    </tr>";   
            }
    }    
?>      
    <table border="1">
        <th>Multiplicación</th>       
            <?php multiplicacion($numero);     ?>
            <?php calcular_factorial($numero); ?>          
   </table>


Código organizado de PHP (Agradezco su feedback):

<?php
    $numero = $_POST['Numero'];

    public function calcularFactorial($factorial = 1, $numero)
    {
        for ($numero; $numero >= 1; $numero--)
        {
            return $factorial *= $numero;
        }
    }

    public function multiplicarCiclo($numero)
    {
        for($i = 0; $i <= 10; $i++)
        {
            return $numero * $i;
        }
    }
?>


<table border="1">
    <tr>
        <td><?php echo "$numero x $i:"; ?></td>
        <td><?php echo multiplicarCiclo($numero); ?></td>
    </tr>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo calcularFactorial(1, $numero); ?></td>
    </tr>
</table>

Convencion para proyectos de PHP moderno

Amo este curso, clarísimo, práctico y entretenido. Les aviso que faltan los archivos de la clase para hacer el desafío de la organización del código.

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php 
        for ($i = 0; $i <= 10; $i++): 
    ?>
    <tr>
        <td><?php echo "$numero x $i:"; ?></td>
        <td><?php echo $numero * $i; ?></td>
    </tr>
    <?php endfor; ?>
    
    <?php
        $factorial = 1;
        for ($factorial = $numero; $factorial >= 1; $factorial--){
            $factorial *= $factorial;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

Así quedó mi reto:

Nota de la clase: como tenemos el código organizado en los diversos archivos o clases. Ahí que evitar tener clases que no con un nombre y dentro de ella tenemos funciones que no tengan que ver nada con el nombre de la clase, así como donde pongo los archivos de mi proyecto, es decir en diferentes carpetas, por ejemplo carpetas de conexión, carpeta de diseño, carpeta de clases, etc.

```js "$numero x $i", 'resultado' => $numero * $i ]; } return $resultados; } function calcularFactorial($numero) { $factorial = 1; for ($i = 1; $i <= $numero; $i++) { $factorial *= $i; } return $factorial; } $numero = $_POST['Numero'] ?? 0; $resultadosMultiplicacion = calcularTablaMultiplicar($numero); $resultadoFactorial = calcularFactorial($numero); <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Cálculo de Tabla de Multiplicar</title> </head> <body> <form action="index.php" method="post"> <label for="Numero">Número</label> <input type="text" name="Numero" id="Numero"> <input type="submit" value="Calcular"> </form>
Operación Resultado
Factorial
</body> </html> ```
Propuesta al reto: ```js = 1; $f--) { $factorial *= $f; } return $factorial; } $numero = getNumero(); ?> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="reto2.php" method="post" value="<?php echo $numero ?>"> <input name="Numero" /> <input type="submit" /> </form>
</body> </html> ```
<?php

$numero = isset($_POST["number"]) ? intval($_POST["number"]) : 0;
$multiplicidad = isset($_POST["multiplicity"]) ? intval($_POST["multiplicity"]) : 0;
$tipo = isset($_POST["tipo"]) ? $_POST["tipo"] : 'multiplicar';

function imprimirEncabezado($tipo){
    echo "<tr>";
    switch ($tipo){
	case "multiplicar":
	    echo "<th>Número</th>";
	    echo "<th>Multiplicidad</th>";
	    echo "<th>Resultado</th>";
	case "factorial":
	    echo "<th>Número</th>";
	    echo "<th>Factorial</th>";
	default:
	    echo "<th>Número</th>";
    }
    echo "</tr>";
}

function calcularMultiplo($numero, $multiplicidad){
    return $numero * $multiplicidad;
}

function imprimirCelda($numero, $multiplicidad){
    echo "<tr>";
    echo "<td>";
    echo $numero;
    echo "</td>";
    echo "<td>" . $multiplicidad . "</td>";
    echo "<td>" . calcularMultiplo($numero, $multiplicidad) . "</td>";
    echo "</tr>";
}

function imprimirTabla($numero, $multiplicidad){
    echo "<table border='1'";
    imprimirEncabezado();
    if(!$multiplicidad){
	$multiplicidad = 10;
    }
    for($i=0; $i<= $multiplicidad; $i++){
	imprimirCelda($numero, $i);
    }
    echo "</table>";
}

function calcularFactorial($numero) {
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

function imprimirFactorial($numero){
    $factorial = calcularFactorial($numero);
    echo "<table border='1'>";
    echo "<tr>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>" . $numero . "</td>";
    echo "<td>" . $factorial . "</td>";
    echo "</tr>";
    echo "</table>";
}
?>

<!DOCTYPE html>
<html lang="en">
    <head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Tablas de Multiplicar</title>
    </head>
    <body>
      <div id="app"></div>
      <form action="./" method="POST">
	  <label for="number">Número:</label>
	  <input type="number" name="number" id="number">
	  <label for="multiplicity">Multiplicidad:</label>
	  <input type="multiplicity" name="multiplicity" id="multiplicity">
	  <label for="tipo">Selecciona la operación deseada:</label>
	  <select name="tipo" required>
	      <option value="multiplicar">Tablas de Multiplicar</option>
	      <option value="factorial">Factorial</option>
	  </select>
	  <button type="submit">Generar Tabla</button>
      </form>
      <?php
      if($tipo == 'multiplicar'){
	  imprimirTabla($numero, $multiplicidad);
      }else{
	  imprimirFactorial($numero);
      }?>
    </body>
</html>
Mi solución del reto 2: ```js = 1; $f--) { $factorial *= $f; } return $factorial; } function multiplicar(int $numero, int $numero2) { return $numero * $numero2; } ?>
```\= 1; $f--) {        $factorial \*= $f;    }    return $factorial;}function multiplicar(int $numero, int $numero2){    return $numero \* $numero2;}?>\    \        \            \            \        \    \    \        \        \    \\
\\\\
\\\\

ruta2.php

<code> 
<?php
    $numero = $_POST['Numero'];

    function multiplicarDosNumeros($numeroUno, $numeroDos) {
        return $numeroUno * $numeroDos;
    }

    function factorial($numero) {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++) {
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo multiplicarDosNumeros($numero, $i); ?></td>
            </tr>
        <?php } ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>

Title.html

<code> 
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Title</title>
  </head>
  <body>
    <form action="reto2.php" method="post">
      <input name="Numero" />
      <input type="submit" />
    </form>
  </body>
</html>

Éste es mi código…

<?php
    $numero = $_POST['Numero'];
    construirTabla($numero);        


function construirTabla($numero){
    echo " <table border='1'> ";
    hallarMultiplos($numero);
    hallarFactorial($numero);
    echo "</table>";
}

function hallarMultiplos($numero) : void {
    for ($i = 0; $i <= 10; $i++){
        echo "<tr>";
        echo "<td>" . $numero . "x" . $i.":" . "</td>";
        echo "<td>" . $numero * $i . "</td>";
        echo "</tr>";
    }
}

function hallarFactorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }

    echo "<tr>";
    echo "<td>" . $numero."!". "</td>";
    echo "<td>" . $factorial . "</td>";
    echo "</tr>";
}
<?php
    $numero = $_POST['Numero'];
    $numero = 6;
    imprimir_tabla($numero);

    function imprimir_tabla($numero){
        echo '<table border="1">';
                
        mostrar_tabla_multiplicar($numero);
        mostrar_factorial_tabla($numero);            
            
        echo '</table>';
    }
    function mostrar_factorial_tabla($numero){
        echo'
        <tr>
            <td> '.$numero.'! </td>
            <td> '.factorial($numero).' </td>
        </tr>
        ';
    }
    function factorial($numero):int{
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }

    function mostrar_tabla_multiplicar($numero){
        for ($i = 0; $i <= 10; $i++){
            echo' 
            <tr>
                <td>'.$numero.' x '.$i.': </td>
                <td> '.$numero*$i.'</td>
            </tr>';
        }

        

    }
?>

no se si esta bien, pero yo si lo considero mucho mejor

<?php
    $numero = $_POST['Numero'];

    function calcularFactoriar($numeroFactoriar){
        $factorial = 1;

        for ($i = $numero; $i >= 1; $i--) {
            $factorial *= $f;
        } 
    }


?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body> 
    <table border="1">

        <?php for ($i = 0; $i <= 10; $i++): ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        <?php endfor; ?>

        <?php
            factorial($numero);
        ?>

        <tr>
            <td><?= $numero; ?>!</td>
            <td><?= $factorial; ?></td>
        </tr>
    </table>
</body>
</html>

🍃Aquí el código corregido para que lo comparen:

<?php
  $numero = $_POST['Numero'];

  $factorial = 1;

  for ($f = $numero; $f >= 1; $f--) {
    $factorial *= $f;
  }
?>
<table border="1">
  <?php for ($i = 0; $i <= 10; $i++): ?>
  <tr>
    <td><?php echo "$numero x $i:"; ?></td>
    <td><?php echo $numero * $i; ?></td>
  </tr>
  <?php endfor; ?>
  <tr>
    <td><?php echo "$numero!"; ?></td>
    <td><?php echo $factorial; ?></td>
  </tr>
</table>
<!DOCTYPE html>
<!-- saved from url=(0094)https://static.platzi.com/media/public/uploads/reto2_ba67975f-2599-4e42-ae73-047e5f6cf9ee.html -->
<html lang="es">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

		<title>Title</title>
	</head>
	<body>
		<form action="reto-2.php" method="post">
			<input name="Numero" />
			<input type="submit" />
		</form>
	</body>
</html>

Mi respuesta para el reto 2

<?php
    $numero = $_POST['Numero'];

    function calcularFactorial($numero)
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }

    function calcularExponencial($numero)
    {
        $html = "";
        for ($i = 0; $i <= 10; $i++){
            $result = $numero * $i;
            $html = $html."<tr>
                <td>$numero x $i:</td>
                <td>$result</td>
            </tr>";
        }
        return $html;
    }
?>
<table border="1">
    <?php echo calcularExponencial($numero); ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo calcularFactorial($numero); ?></td>
    </tr>
</table>

Mi propuesta:

<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <?php imprimirTabla($numero); ?>
    <?php imprimirFactorial($numero); ?>
</table>

<?php

function imprimirFactorial($numero) {
    $factorial = calcularFactorial($numero);

    echo "<tr>";
    echo "<td>$numero!</td>";
    echo "<td>$factorial</td>";
    echo "</tr>";
}

function calcularFactorial($numero) {
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) 
        $factorial = multiplicar($factorial, $f);

    return $factorial;
}

function imprimirTabla($numero) {
    for ($i = 0; $i <= 10; $i++) 
        imprimirFila($numero, $i);
}

function imprimirFila($numero, $i) {
    $res = multiplicar($numero, $i);

    echo "<tr>";
    echo "<td>$numero x $i:</td>";
    echo "<td>$res</td>";
    echo "</tr>";
}

function multiplicar($numero1, $numero2) {
    return $numero1 * $numero2;
}
?>

reto2.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <form action="reto2.php" method="post">
        <input name="Numero" />
        <input type="submit" />
    </form>
</body>

</html>

reto2.php

<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++){
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        }
    ?>
    <?php
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Este es mi codigo organizado.
Realize solo la logica de PHP iniciando el script, dentro del HTML solo muestro los resultados.

<?php
$numero = 8;

function multiplicarNumero($numero,$i){
    return $numero * $i;
}

function factorialNumero($numero){
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}
?>
<table border=“1”>
<?php for ($i = 0; $i <= 10; $i++): ?>
<tr>
<td><?=$numero x $i:” ?></td>
<td><?= multiplicarNumero($numero,$i) ?></td>
</tr>
<?php endfor; ?>
<tr>
<td>Factorial <?= $numero ?></td>
<td><?= factorialNumero($numero) ?></td>
</tr>
</table>

este es mi aporte 😄

<?php
    $numero = $_POST['Numero'];
    imprimirTabla($numero);

    function multiplicarNumero($numero)
    {
        
        for($i=0; $i<=10; $i++)
        {
           
            echo "<tr>";
            echo "<td>"."$numero"."x"."$i"."</td>";
            echo  "<td>".$numero*$i."</td>";
            echo "</tr>";
        }
    }

    function formulaFactorial($numero)
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--)
        {    
            $factorial *= $f;
            
        }
        echo "<tr><td>$factorial!</td></tr>";
    }

    function imprimirTabla($numero)
    {
        echo '<table border="1"';
        multiplicarNumero($numero);
        formulaFactorial($numero);
        echo '</table>';
    }
?>


Me queda así

<?php
$numero = $_POST['Numero'];
function tablaMultiplicar($numero){
	$tabla = [];
	for ($i = 0; $i <= 10; $i++):
		$tabla[] = $numero * $i;
	endfor;
	return $tabla;
}
function factorial ($numero){
	$factorial = 1;
	for ($f = $numero; $f >= 1; $f--) :
		$factorial *= $f;
	endfor;
	return [$factorial];
}
function tablaHtml($numero, $arrayDatos){
	$r = '<table border="1">';
	for ($i = 0; $i < count($arrayDatos) - 1; $i++):
		$r .= ('<tr><td>'. $numero .' x '. $i.':</td>');
		$r .= ('<td>' . $arrayDatos[$i] . '</td></tr>');
	endfor; 
    $r .= ('<tr><td>' . $numero . '!</td>');
    $r .= ('<td>' .end($arrayDatos). '</td></tr>');
	$r .= '</table>';
	return $r;
}
echo tablaHtml($numero,array_merge(tablaMultiplicar($numero),factorial($numero)));

Mi solucion

PHP

<?php
    $numero = $_POST['Numero'];
    function factorial($numero) : int {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        <?php endfor; ?>
    <?php
        $factorial = factorial($numero);
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Title</title>
    <script async src="/cdn-cgi/bm/cv/669835187/api.js"></script>
  </head>
  <body>
    <form action="reto2.php" method="post">
      <input name="Numero" />
      <input type="submit" />
    </form>
    <script>
      (function () {
        window["__CF$cv$params"] = {
          r: "72d557338f905006",
          m: "UFHBMbPRyH1tu25FvOiZHf2n._9HA7_gRWOnr1BPtbg-1658253458-0-AUnMuMWs/B9hPktOVsA0DX/g4zdns96PYIjx9QBgtWUGmNwZ6tsrGF0aVINUqpiMSUq/1Kw0gKpXn3SLkhiCIe6iVyg9KOEYdF/FB+/l94UK5MEa3hybG8aHkJElsNC+BGeAc6Voy6CAB0LMZKr29x0qXaW+0IiT6a76qc0RxxeogPozL6aF4rdK2kXSbGPFxbhFN5DYcfE/aOL08bQIQO4=",
          s: [0xe4f86a12cc, 0xc00e49e0ba],
        };
      })();
    </script>
  </body>
</html>

<!DOCTYPE html>
<html>
<head>
<title>Reto 2 cumplido</title>
</head>
<body>
<?php
$numero = 7; ?>
<table border=“1”>
<?php
imprimirIteracionNumeros($numero);
imprimirNumeroFactorial($numero);
?>
</table>
<?php
// Funciones
function multiplicar($numero, $i) {
return $numero * $i;
}
function imprimirIteracionNumeros($numero) {
for ($i = 0; $i <= 10; $i++) {
echo “<tr>”;
echo “<td>$numero * $i:></td>”;
echo “<td>”;
echo multiplicar($numero, $i);
echo “</td>”;
echo “</tr>”;
}
}
function imprimirNumeroFactorial($numero) {
$factorial = 1;
for ($f = $numero; $f >= 1; $f–) {
echo “<tr>”;
echo “<td>$numero!</td>”;
echo “<td>”;
echo $factorial *= $f;
echo “</td>”;
echo “</tr>”;
}
}
?>
</body>
</html>

<?php
    const CANTIDAD_NUMEROS = 10;
    $numeroIngresado = $_POST['Numero'];
    
    function calculoFactorial(int $numero) :int
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php for ($i = 0; $i <= CANTIDAD_NUMEROS; $i++){ ?>
            <tr>
                <td><?php echo "$numeroIngresado x $i:"; ?></td>
                <td><?php echo $numeroIngresado * $i ?></td>
            </tr>
    <?php } ?>
    <tr>
        <td><?php echo "$numeroIngresado!"; ?></td>
        <td><?php echo calculoFactorial($numeroIngresado); ?></td>
    </tr>
</table>

Buenas, dejo mi solución al reto. Me parece más prolijo y funcional que lo que es HTML se quede en el HTML. Esto va a permitir que si un diseñador necesita meter mano para sumar clases y estilos, pueda modificar los <td> sin necesidad de tocar mi código.

<?php
function factorial(int $value){
	if($value == 0){
		return 1;
	}
	return $value * factorial($value - 1);
}

function print_td(string $text){
	return "<td>$text</td>";
}
function print_tr(string $text){
	return "<tr>$text</tr>";
}
function init($numero){
	$template = '<table border="1">';
	for($i = 0; $i <= 10; $i++){
		$num = print_td("$numero x $i:");
		$value = print_td($numero * $i);
		$template .= print_tr($num . $value);
	}
	$factorial = factorial($numero);
	$factorialFormat = print_td($factorial);
	$numeroFormat = print_td("$numero !");
	$template .= print_tr($numeroFormat . $factorialFormat);
	$template .= '</table>';
	return $template;
}

$numero = (int) $_POST['Numero'];
echo init($numero);

Aquí mi solución 😄

<?php
    $numero = intval($_POST['Numero']);
    
    //Funcion que calcula el factorial de forma recursiva
    function factorial( $num ){ 
        if( $num == 0 ) return 1;
        
        return $num * factorial( $num - 1 );
    }

    function tablaNumerica( $num ){
        $template = "";
        for ( $i = 0; $i <= 10; $i++ ){
            $valor = $num * $i;
            $template .= 
            "<tr>
                <td>$num x $i</td>
                <td>$valor</td>
            </tr>";
        }

        return $template;
    }
   
?>

<table border="1">
    <?=tablaNumerica($numero) ?>
    <tr>
        <td><?="$numero!"; ?></td>
        <td><?=factorial($numero); ?></td>
    </tr>
</table>

Un poco tarde pero bueno, no me podía quedar con las ganas de hacer el reto y compartirles mi código.

<?php

$numeroPost = (int) trim($_POST['Numero']);

function multiplicarNumero(int $numero = 2)
{
    $resultado = 0;
    for($a = 1; $a <= 10; $a++)
    {
        $resultado = $numero * $a;
        mostrarMulitiplicacion($numero, $a, $resultado);
    }
}

function mostrarMulitiplicacion(int $numero, int $multiplicador, int $resultado)
{
    echo "
        <tr>
            <td> {$multiplicador} * {$numero} </td>
            <td> {$resultado} </td>
        </tr>
    ";
}

function factorial(int $numero = 2)
{
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    mostrarFactorial($factorial, $numero);
}

function mostrarFactorial(int $factorial, int $numero)
{
    echo "
        <tr>
            <td> Factorial de {$numero} </td>
            <td> {$factorial} </td>
        </tr>
    ";
}

?>

<table border="1">
    <tr>
        <td colspan="2">Multiplicación</td>
    </tr>
    <?php multiplicarNumero($numeroPost); ?>
    <tr>
        <td colspan="2">Factorial</td>
    </tr>
    <?php factorial($numeroPost); ?>
</table>

Mi solución al reto:

<?php
    //$numero = $_POST['Numero'];
    $numero=9;

    function iteration($numero){
        for ($i = 0; $i <= 10; $i++){    
            echo "<tr>";
            echo "<td>$numero x $i:</td>";
            echo "<td>".$numero * $i."</td>";
            echo "</tr>";
        }
    }
        
        function calcFactorial($numero){
        $factorial = 1;
        $num_factorial = $numero - ($numero - 1 );
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        
        echo "<tr>";
        echo "<td>$num_factorial!</td>";
        echo "<td>$factorial!</td>";
        echo "<tr>";
        $num_factorial++;
        }
    }

?>
<table border="1"> 
    <?php

    iteration($numero);
    
    calcFactorial($numero);
    ?>
</table>

Lo hice directo con php porque con el html no funcionaba

<?php
    $numero = $_POST['Numero'];

    function multiply( $number, $index ){
        return $number * $index;
    }

    function concat( $first, $second ){
        return "$first x $second";
    }

    function factorial($number){
        $factorial = 1;
        for ($f = $number; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;

    }

?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo concat($number, $i) ?></td>
                <td><?php echo multiply($number, $i); ?></td>
            </tr>
        <?php endfor; ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero) ?></td>
    </tr>
</table>

Buenas! Comparto mi resolución al reto, saludos!


reto_:2.php

<?php
$numero = $_POST['Numero'];
?>

<table border = "1">

    <?php
    for ($i = 0; $i <= 10; $i++):
        ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php  echo multiplicar($numero, $i); ?></td>
        </tr>

    <?php 
        endfor;

        $factorial = 1;

        $factorial_resultado = factorial($numero, $factorial);
    ?>
     

    <tr>
        <td><?php echo "$numero!";?> </td>
        <td><?php echo $factorial_resultado;?> </td>
    </tr>

</table>



<?php
//Definición de funciones

function multiplicar($a, $b){
    return $a*$b;
}

function factorial($num, $factorial){

    for ($f = $num; $f >= 1; $f--) {
            $factorial *= $f;
        }
    return $factorial;
}
?>

MI reto

<?php
    $numero = $_POST['Numero'];
    
    function multiplicarPor($numero,$i){
        $resultado = $numero * $i;
        return $resultado;
    }
    function factorial($numero){
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
         $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo multiplicarPor($numero,$i); ?></td>
            </tr>
        <?php endfor; ?>
   
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>
<?php

function calculateFactorial($number) {
    $factorial = 1;
    for ($i = $number; $i >= 1; $i--) {
        $factorial *= $i;
    }
    return $factorial;
}

function createTableColumn($tag, $value) {
    return sprintf("<%s> %s </%s>", $tag, $value, $tag);
}

function createTableRow($items = []) {
    $tableContent = "<tr>";
    foreach ($items as $key => $value) {
        $tableContent .= createTableColumn($value["tag"], $value["value"]);
    }
    $tableContent .= "</tr>";
    echo $tableContent;
}

function createMultipleRows($totalRows, $number, $items = []) {
    for ($i = 0; $i <= $totalRows; $i++) {
        echo createTableRow([
            ["tag" => "td", "value" => "$number x $i:"],
            ["tag" => "td", "value" => $number * $i],
        ]);
    }
}

$numero = $POST['numero'];
?>

<table border="1">
	<?php createMultipleRows(10, $numero); ?>

	<?php 
        createTableRow([
            ["tag" => "td", "value" => "$numero!"],
            ["tag" => "td", "value" => calculateFactorial($numero)],
        ]); 
    ?>
</table>

Una posible solución:

tablaDeMultiplicar.php

<?php

function tablaDeMultiplicar($numero)
{
    $array = [];
    for($i = 0; $i <= 10; $i++) {
        $array[$i] = $numero * $i;
    }
    return $array;
}

factorial.php

<?php

function factorial($numero)
{
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

index.php

<?php

include "tablaDeMultiplicar.php";
include "factorial.php";

$numero = $_POST['Numero'];
$celdas = tablaDeMultiplicar($numero);
$factorial = factorial($numero);

?>
<table border="1">
<?php
    foreach($celdas as $clave => $valor) {
?>
    <tr>
        <td><?= "$numero x $clave:"; ?></td>
        <td><?= $valor; ?></td>
    </tr>
<?php 
    }
?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Resultado del reto:

<?php
$numero = 0;
    function factorial($numero) {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }

    function multiplicarNumero($numero, $veces) {
        $resultados = [];
        for ($i=0; $i <= $veces; $i++) { 
            array_push($resultados, ($numero * $i));
        }
        return $resultados;
    }
?>

<?php if (isset($_POST['Numero']) && !empty($_POST['Numero'])): ?>

<?php
    $numero = $_POST['Numero'];
    $resultadosMultiplicacion = multiplicarNumero($numero, 10);
    $factorial = factorial($numero);
?>

<table border="1">
    <?php for ($i=0; $i < count($resultadosMultiplicacion); $i++):?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo $resultadosMultiplicacion[$i]; ?></td>
        </tr>
    <?php endfor?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

<?php endif?>

<?php
$numero = $_POST[‘Numero’];

function calcularFactorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

function multiplicarIteraccion($numero, $i){
    return $numero * $i;
}

function imprimirIteraccionNumero($numero){
    echo multiplicarIteraccion;
}

function imprimirFactorial(){
    echo calcularFactorial;
}

?>

<table border=“1”>
<tr>
<td imprimirIteraccionNumero ($numero)> </td>
<td imprimirFactorial($numero) > </td>
</tr>
</table>

Mi solución al reto propuesto:

<?php
/**
 * Organizar el codigo de mnanera que sea modular, reutilizable y que cumpla con las buenas practicas enseñadas haste el mommento
 */
$numero = $_POST['Numero'];

function tablaMultiplicar($numero){
    for ($i = 0; $i <= 10; $i++) :
        echo "<tr>";
        echo "<td> $numero x $i: </td>";
        echo "<td>".$numero * $i ."</td>";
        echo "</tr>";
    endfor;
}

function factorial($numero){
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

function mostrarTabla($numero){
    echo tablaMultiplicar($numero);
    echo "<tr>";
    echo "<td> $numero! </td>";
    echo "<td>".factorial($numero)."</td>";
    echo "</tr>";
}
?>

<table border="1">
    <?php echo mostrarTabla($numero); ?>
</table>




No sé nada de PHP pero así me quedo a mi

Les comparto mi reto

reto2.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script async src='/cdn-cgi/bm/cv/669835187/api.js'></script>
</head>
<body>
    <form action="reto2.php" method="post">
        <input name="Numero"/>
        <input type="submit"/>
    </form>
</body>
</html>

reto2.php

<?php

function table($number){
    $tabla = "<table border='2'>". pintarFilas($number).factorial($number) ."</table>";
    return $tabla;
}

function pintarFilas($number){
    $filas = '<tr>
                <th>Multiplo</th>
                <th>Resultado</th>
            </tr>';
    return multplicar($number, $filas);
}

function multplicar($number, $filas){

    for ($i=0; $i <= 10; $i++) { 
        $filas .= "<tr>".
                    "<td>". $number . 'x ' . $i . "</td>".
                    "<td>".($number*$i)."</td>".
                "</tr>";
    }
    return $filas;
}
        
function factorial($number){
    $filas = '<tr>
                <th>Factorial</th>
                <th>Resultado</th>
            </tr>';

    $factorial = 1;
    for ($i = 1; $i <= $number; $i++) {
        $filas .= "<tr>".
                        "<td>". $i . '!'. "</td>".
                        "<td>".$factorial*$i."</td>".
                  "</tr>";
    }
    return $filas;
}

if (isset($_POST)) {
    $number = (int)$_POST['Numero'];
    echo table($number);
}
?>

Resultado

Comparto mi forma de organizar el codigo

<?php
$numero = $_POST['Numero'];

echo tabla($numero);

// Funcion para imprimir tabla
function tabla($numero){
    
    $valores = "<table border='1'>";
    
    for ($i = 0; $i <= 10; $i++):
        $valores .= "<tr>";
        $valores .= "<td>{$numero} x {$i}:</td>";
        $valores .= "<td>".$numero * $i."</td>";
        $valores .= "</tr>";
    endfor;
    
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    
    $valores .= "<tr>";
    $valores .= "<td>{$numero}!</td>";
    $valores .= "<td>{$factorial}</td>";
    $valores .= "</tr>";
    $valores .= "</table>";
    return $valores;
}

La estructura de directorios la puse asi:

El codigo de public/index.html es este:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<body>
    <form action="reto2.php" method="post">
        <input name="Numero" />
        <input type="submit" />
    </form>
</body>

</html>

El de public/reto2.php es este:

<?php
    require_once('../src/reto2.php');
?>
<!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>Title</title>
        </head>
        <body>
            <?php
                echo pintarTabla($_POST['Numero']);
            ?>
        </body>
    </html>

y el de src/reto2.php es este:

<?php
    function pintarTabla($numero) : string {
        $tabla = '<table border="1">'.pintarFilas($numero).pintarFactorial($numero).'</table>';

        return $tabla;
    }

    function pintarFilas($numero) : string {
        $filas = '';

        for($i = 0; $i <= 10; $i++) {
            $filas .= '<tr><td>'.$numero.' x '.$i.':</td><td>'.$numero*$i.'</td></tr>';
        }

        return $filas;
    }

    function pintarFactorial($numero) : string {
        $factorial = calcularFactorial($numero);

        $filafactorial = '<tr><td>'.$numero.'!</td><td>'.$factorial.'</td></tr>';

        return $filafactorial;
    }

    function calcularFactorial($numero) : int {
        $factorial = 1;

        for($f = $numero; $f>=1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }

La ejecucion final me arroja esto:

Así me quedo a mi si tienen algún feedback se agradece ya que se me complico un poco. Gracias!

<?php
    $numero = 10;
    
    public function calcularFactorial ($numero){
        $factorial = 1;
        for ($numero; $numero >= 1; $numero--){
            return $factorial * $numero;
        }
    }

    public function forLoop($numero) {
        for($i = 0; $i <= 10; $i++){
            echo $numero * $i;
        }
    }


?>


<table border="1">
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php forLoop($numero) ?></td>
            </tr>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php calcularFactorial($numero) ?></td>
    </tr>
</table>

Mi solucion

<?php
$numero = $_POST['Numero'];
?>
<table border="1">
  <?php
  //|a x b:|c|
  for ($i = 0; $i <= 10; $i++) :
    $x = "$numero x $i:";
    $y = $numero * $i;
    trWrite([$x, $y]);

  endfor;

  #factorial
  //| p! | q |
  $factorial = getFactorial($numero);
  trWrite(["$numero!", $factorial]);


  function getFactorial($inicio)
  {
    $factorial = 1;

    for ($f = $inicio; $f >= 1; $f--) {
      $factorial *= $f;
    }
    return $factorial;
  }

  function trWrite($list)
  {
    echo '<tr>';
    array_walk($list, 'tdWrite');
    echo '</tr>';
  }

  function tdWrite($text)
  {
    echo "<td>$text</td>";
  }

  ?>

</table>

Cordial saludo comunidad, a continuacion anexo screnshot con mi solucion al reto, agradeceria que apoyen con sus comentarios, para saber en que puedo mejorar.

Tambien para las personas que quieran subir un screenshot de su codigo les recomiendo instalar polacode en las extensiones de visual studio code.

Vale, yo no se nada de php pero aquí está lo que hice y casi muy poco de js. De hecho el de html no tengo ni idea de qué es lo que hace el js

<?php
    $numero = $_POST['Numero'];
    echo '<table border="1">'
    multiplicationRows( $numero );
    factorialRow( $numero );
    echo '</table>'

    function multiplicationRows( $numero )
    {
        for ($i = 0; $i <= 10; $i++)
        {
            echo "<tr>";
                echo "<td>";
                echo "$numero x $i:";
                echo "</td>";
                echo "<td>";
                echo "$numero * $i:";
                echo "</td>";
            echo "</tr>";
        }
    }

    function factorialRow( $numero )
    {
        $factorial = 1;
        for ($i = 1; $i <= $numero; $i++)
        {
            $factorial *= $i;
        }
        echo "<tr>";
            echo "<td>";
            echo "$numero!";
            echo "</td>";
            echo "<td>";
            echo "$factorial:";
            echo "</td>";
        echo "</tr>";
    }
    
?>

Version reto2.html

<!DOCTYPE html>
<!-- saved from url=(0094)https://static.platzi.com/media/public/uploads/reto2_ba67975f-2599-4e42-ae73-047e5f6cf9ee.html -->
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Title</title>

    <script data-dapp-detection="">
        !function()
        {
            let e =! 1;
            function n()
            {
                if (!e)
                {
                    const n = document.createElement("meta");
                    n.name = "dapp-detected", document.head.appendChild(n), e =! 0;
                }
            }
            if (window.hasOwnProperty("ethereum"))
            {
                if (window.__disableDappDetectionInsertion =! 0, void 0 === window.ethereum)
                    return;
                n();
            }
            else
            {
                var t=window.ethereum;
                Object.defineProperty(
                    window,"ethereum",
                    {
                        configurable: !0,
                        enumerable: !1,
                        set:function(e)
                            {
                                window.__disableDappDetectionInsertion || n(),
                                t = e
                            },
                        get:function() {
                            if (!window.__disableDappDetectionInsertion)
                                {
                                    const e = arguments.callee;
                                    e && e.caller && e.caller.toString && -1 !== e.caller.toString().indexOf("getOwnPropertyNames") || n()
                                }
                            return t;
                        }
                    }
                )
            }
        }();
    </script>
    <script src="chrome-extension://mooikfkahbdckldjjndioackbalphokd/assets/prompt.js"></script>
</head>
<body>
    <form action="reto2.php" method="post">
        <input name="Numero">
        <input type="submit">
    </form>
</body>
</html>

No es mucho , pero es trabajo honesto 😂

![](

<?php
	$numero = $_POST['Numero'];
	function imprimirIteraciones($numero){
		for ($i = 0; $i <= 10; $i++){
			$producto = $numero* $i;
			imprimirRenglon("$numero x $i:",$producto);
		}
	}
	function calcularFactorial($numero){
		$factorial = 1;
		for ($f = $numero; $f >= 1; $f--) {
			$factorial *= $f;
		}
		return $factorial;
	}
	function imprimirFactorial($numero){
		$factorial = calcularFactorial($numero);
		imprimirRenglon($numero."!",$factorial);
	}
	function imprimirRenglon($izquierda,$derecha){
		echo "<tr>".
		"<td>$izquierda</td>".
		"<td>$derecha</td>".
		"</tr>";
	}
?>
<table border="1">
	<?php
		imprimirIteraciones($numero);
		imprimirFactorial($numero);
	?>
</table>
<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <th>Multiplicación</th>
    <tr>
        <td><?php echo multiplicacion($numero); ?></td>
        <td><?php echo "Factorial " . factorial($numero); ?></td>
    </tr>
</table>



<?php 
function multiplicacion($numero){
	for ($i = 0; $i <= 10; $i++){
        echo "<tr>
                <td>$numero x $i:</td>
                <td>" . $numero * $i . "</td>
            </tr>";
    }
    return $numero;
}

function factorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}
<?php

        $numero = $_POST['Numero'];
        tablaMultiplicar($numero);

        function tablaMultiplicar($numero) {
            for ($i = 0; $i <= 10; $i++) {
                $multiplicadorFila = "$numero x $i";
                $resultadoMultiplicacionFila = $numero * $i;
                imprimirResultadoMultiplicacion($multiplicadorFila,$resultadoMultiplicacionFila,$i,$numero);
            }
        }

        function imprimirResultadoMultiplicacion($multiplicadorFila,$resultadoMultiplicacionFila,$valorCiclo,$numero) {
            if($valorCiclo == 0){ echo "<table border='1'>";}
            echo '<tr>
                                          <td>'.$multiplicadorFila.'</td>
                                          <td>'.$resultadoMultiplicacionFila.'</td>
                                      </tr>';
            if($valorCiclo == 10) { calcularFactorial($numero); }
        }

        function calcularFactorial($numero) {
            $factorial = 1;
            for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
            }
            echo '<tr>
                                          <td>'.$numero.'!</td>
                                          <td>'.$factorial.'</td>
                                     </tr>
                          </table>';
        }

Reto2

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php
        multiplyNumber($numero);
    ?>
    <?php
        function printResult( $text, $result ) {
            return "
                <tr>
                    <td>$text</td>
                    <td>$result</td>
                </tr>
                ";
        }

        function multiplyNumber( $number ) {
            for ($i = 0; $i <= 10; $i++) {
                echo printResult("$number x $i:", $number * $i);
            }
        }

        function factorialNumber( $number, $factorial = 1 ) {
            for ($f = $number; $f >= 1; $f--) {
                $factorial *= $f;
            }
            return $factorial;
        }
    ?>
    <?php echo printResult("$numero!", factorialNumber($numero)) ?>
</table>

no entiendo mucho php pero asi parece estar muy ordenado

<?php
    $numero = $_POST['Numero'];

    function Ciclo1(){
        for ($i = 0; $i <= 10; $i++){
            echo "$numero x $i:"; 
            echo $numero * $i; 
        }
    }

    function Factorial(){
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    }

?>
<table border="1">
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

Referente al reto:

<?php
    $numero = $_POST['Numero'];

    function generarMultiplicaciones($numero) {
        $multiplicaciones = "";
        for ($i = 0; $i <= $numero; $i++) {
            $multiplicaciones .= generarFila("$numero x $i", $numero * $i);
        }
        return $multiplicaciones;
    }

    function generarFactorial($numero) {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return generarFila("$numero!", $factorial);
    }

    function generarFila($indicador, $valor) {
        return "
            <tr>
                <td>$indicador</td>
                <td>$valor</td>
            </tr>
        ";
    }

    function imprimirTabla($multiplicaciones, $factorial) {
        echo "
            <table border=\"1\">
                $multiplicaciones
                $factorial
            </table>
        ";
    }

    imprimirTabla(generarMultiplicaciones($numero), generarFactorial($numero));
?>
<<?php
    $numero = 5
?>
<table border="1">
    <?php
        imprimirMultiplicacion($numero);
        ?>
    <?php
        $factorial = 1;
        $calculoFactorial = calcularFactorial($factorial, $numero);
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $calculoFactorial; ?></td>
    </tr>
</table>

<?php
function imprimirMultiplicacion($numero){
    for ($i = 0; $i <= 10; $i++){
        echo "
        <tr>
            <td> ".$numero ."x". $i.": </td>
            <td> ".$numero * $i;"</td>
        </tr>";
    }    
}

function calcularFactorial($factorial, $numero){
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;
}

?>>
<?php 
    $numero = $_POST['Numero'];
    
    function imprimirMultiplicadores($numero){
        for ($i = 0; $i <= 10; $i++){
            echo "<tr>";
            echo "<td> $numero x $i: </td>";
            echo "<td>". $numero * $i ."</td>";
            echo "</tr>";
        }
    }
    
    function calcularFactorial($numero) {
        $factorial = 1;
        
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        
        imprimirFactorial($numero, $factorial);
    }
    
    function imprimirFactorial($numero, $factorial){
        echo "<tr>";
        echo "<td>".$numero."!</td>";
        echo "<td>".$factorial."</td>";
        echo "</tr>";
    }
    
    ?>

<table border="1">
    <?php 
        imprimirMultiplicadores($numero);
        calcularFactorial($numero);
    ?>
</table>```

Reto de la clase

<!DOCTYPE html>
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 	<title>Cálculos Matematicos</title>
</head>
<body cz-shortcut-listen="true">
    <form action="./../src/reto.php" method="post">
        <input name="Numero">
        <input type="submit">
    </form>
</body>
</html>
<?php
    $numero = $_POST['Numero'];

    function generarTabla($numero)
    {
        for ($i = 0; $i <= 10; $i++)
        {
            $fila = "".
            "<tr>".
                "<td>$numero x $i:</td>" .
                "<td>". $numero*$i ."</td>".
            "</tr>";
            echo $fila;
        }
    }
    function factorial($numero):int
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) 
        {
            $factorial *= $f;
        }

        return $factorial;
    }
    function mostrarResultadoFactorial($numero, $factorial)
    {
        $cadena = "" .
        "<tr>
        <td>$numero!</td>
        <td> $factorial</td>
         </tr>";
         echo $cadena;
    }
?>
<table border="1">
    <?php
        generarTabla($numero);
        $factorial=factorial($numero);
        mostrarResultadoFactorial($numero,$factorial);
    ?>
    
</table>

Aca esta el reto:

<?php
    $numero = $_POST['Numero'];

    function imprimir_multiplicacion($num1, $num2){
        $resultado = $num1 * $num2;
        echo "
        <tr>
            <th> $num1 x $num2 : </th>
            <td> $resultado </td>
        </tr>
        ";
    }

    function imprimir_factorial($numero){
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        echo "
        <tr>
            <th> $numero! </th>
            <td> $factorial </td>
        </tr>
        ";
    }
?>
<table border="1">
    <caption>Hola</caption>
    <?php
        for ($i = 0; $i <= 10; $i++):
            imprimir_multiplicacion($numero, $i);
            ?>            
        <?php endfor; ?>   
        <?php imprimir_factorial($numero)?>
</table>

Mi idea solo es hacer mas facil imprimir una fila en la tabla.

una estructura común ayuda a una mejor explicación para algun mienbro nujevo en el equipo.

<?php
    $numero = $_POST['Numero'];
    
    function hallarMultiplicacion($numero, $i){
       return $numero * $i;
    }

    function hallarFactorial($numero){
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>

<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?> 
            <tr>
                <td><?php echo $numero. "x". $i ?></td>
                <td><?php echo hallarMultiplicacion($numero, $i) ?></td>
            </tr>
    <?php endfor;?>
    <tr>
        <td>
            <?php echo "$numero!" ?>
        </td>
        <td>
            <?php echo hallarFactorial($numero) ?>
        </td>
    </tr>
</table>```

Creo que lo empeoré:

<?php
$numero = $_POST[‘Numero’];
?>
<table border=“1”>
<?php
for ($i = 0; $i <= 10; $i++):
impresion($i)
endfor;
?>
<tr>
<td><?php echo “$numero!”; ?></td>
<td><?php echo calculoFactorial($numero); ?></td>
</tr>
</table>
<?php

function impresion(iter){
    echo "<td> $numero x $iter </td"; 
    echo "<td>" . $numero * $iter . "</td"; 
}

function calculoFactorial($dato){
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return factorial
}

?>

Así es como ha quedado mi solución:

<?php
function tablaMultiplicar($numero)
{
    for ($i = 0; $i <= 10; $i++) {
        $resultado = $numero * $i;
        echo "<tr>
                <td> '$numero x $i': </td>
                <td> $resultado </td>
            </tr>";
    }
}

function factorial($factorial, $numero)
{
    for ($f = $numero; $f <= 1; $f--) {
        $factorial *= $f;
    }
}

$numero = $_POST['Numero'];
?>

<table border="1">
    <?php
    tablaMultiplicar($numero);

    $factorial = 1;

    factorial($factorial, $numero);
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Estructura de directorios recomendada

/public
contendrá todos los archivos que serán accesibles desde afuera del servidor
/src
todos los archivos propios de nuestro proyecto
/test
contendrá las pruebas unitarias
/vendor
contendrá todas las librerias de terceros que estemos utilizando.

<?php
    $numero = $_POST['Numero'];

    function multiplicaNumero ($numero) {
        for ($i=0; $i <= 10; $i++) {
            echo "<tr>"; 
            echo "<td>$numero x $i:</td>";
            echo "<td>" . $numero * $i . "</td>";
            echo "</tr>";
        }
    }
    function calculaFactorial ($numero) {
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php multiplicaNumero($numero)?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo calculaFactorial($numero); ?></td>
    </tr>
</table>```

Mi solución:

<?php
    $numero = $_POST['Numero'];
    function factorial($numero)
    {
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
        return $factorial;
    }
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td><?="$numero x $i:";?></td>
            <td><?=$numero * $i;?></td>
        </tr>
    <?php endfor; ?>
    <tr>
        <td><?="$numero!";?></td>
        <td><?=factorial($numero);?></td>
    </tr>
</table>
<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo $numero * $i; ?></td>
            </tr>
        <?php endfor; ?>
    <?php
        $factorial = 1;
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

Esta es mi propuesta del reto:

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td> <?php echo "$numero x $i:"; ?> </td>
            <td> <?php echo $numero * $i; ?> </td>
        </tr>
    <?php endfor; ?>
    <?php
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--){
            $factorial *= $f;
        }
    ?>
    <tr>
        <td> <?php echo "$numero!"; ?> </td>
        <td> <?php echo $factorial; ?> </td>
    </tr>
</table>```
<?php

  $numero = $_POST['Numero'];

  /**
   * Print a row in the table
   *
   * @param mixed $numero
   * @param mixed $i
   * @return void
   */
  function rowPrint($numero, $i)
  {

    echo "
      <tr>
          <td>$numero x $i:</td>
          <td>".multiplyNumbers($numero, $i)."</td>
      </tr>
    ";

  }


  /**
   * Multiply two numbers
   *
   * @param mixed $a
   * @param mixed $b
   * @return int|float
   */
  function multiplyNumbers($a, $b)
  {
    return $a * $b;
  }


  /**
   * Get the factorial of a number
   *
   * @param mixed $numero
   * @return void
   */
  function getFactorial($numero)
  {

    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
      $factorial *= $f;
    }

    echo $factorial;

  }

?>

<table border="1">

    <?php
      for ($i = 0; $i <= 10; $i++) {
        rowPrint($numero, $i);
      }
    ?>

    <tr>
      <td><?php echo "$numero!"; ?></td>
      <td><?php getFactorial($numero); ?></td>
    </tr>

</table>

Solución al reto:

<?php
    $numero = $_POST['Numero'];

    function multiplicacion(int $multiplicando, int $multiplicador) : int {
        $resultado = $multiplicando * $multiplicador;
        return $resultado;
    }

    function factorial(int $numero) : int {
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }
?>
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
    ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo multiplicacion($numero, $i); ?></td>
        </tr>
    <?php
        endfor;
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>

HTML


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <form action="reto2.php" method="post">
            <input name="Numero"/>
            <input type="submit"/>
        </form>
    </body>
</html>

PHP

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo $numero * $i; ?></td>
        </tr>
    <?php endfor; ?>
    <?php
        $factorial = 1;
        
        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Mi solución fue crear diferentes archivos. No creo que sea la mejor, pero puede servir:
Primer archivo - formulario.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="render-resultado.php" method="post">
        <input name="Numero"/>
        <input type="submit"/>
    </form>
</body>
</html>

Segundo archivo - render-resultado.php:

<?php
require_once('funciones-math.php');
$numero = $_POST['Numero'];

$trMultiplicar = renderTablaMultiplicar($numero);
$trFactorial = renderFactorial($numero);
$trTabla = $trMultiplicar.$trFactorial;

$tablaResultado = '<table border="1">';
$tablaResultado .= $trTabla;
$tablaResultado .= '</table>';
print($tablaResultado);
?>

Tercer archivo - funciones-math.php

<?php
function renderTablaMultiplicar($numero){
    $trTable = '';
    for ($i = 0; $i <= 10; $i++):
        $resultado = $numero * $i;
        $trTable .= '<tr>';
        $trTable .= "<td>$numero x $i:</td>";
        $trTable .= "<td>$resultado</td>";
        $trTable .= '</tr>';
    endfor;
    return $trTable;
}

function renderFactorial($numero){
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }

    $trTable = '<tr>';
    $trTable .= "<td>$numero!</td>";
    $trTable .= "<td>$factorial</td>";
    $trTable .= '</tr>';

    return $trTable;
}
?>
export default (state = INITIAL_STATE, action) => {
    switch(action.type){
        case 'traer_usuarios':
            return { ...state, usuarios: action.payload }
	default:    return state;    
    }
}

Un ejemplo pero con redux - javascript

RETO CUMPLIDO!!
AQUI EL HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="index.php" method="POST">
        <input name="Numero"/>
        <input type="submit"/>
    </form>
</body>
</html>

LUEGO EL PHP (ENTENDIBLE)

<?php
    $numero = $_POST['Numero'];

    function multiplacion ( int $multiplicador, int $multiplicando ){
        return $multiplicador*$multiplicando;
    }

    function factorial (int $numero){
        $factorial = 1;
        $temporal = $numero;
        for ( $temporal ; $temporal >= 1; $temporal--) {
            $factorial *= $temporal;
        }
        return $factorial;
    }
?>
<!-- MOSTRAR EN UNA TABLA -->
<table border="1">
    <?php
        for ($i = 0; $i <= 10; $i++):
            ?>
            <tr>
                <td><?php echo "$numero x $i:"; ?></td>
                <td><?php echo multiplacion($numero,$i); ?></td>
            </tr>
        <?php endfor; ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo factorial($numero); ?></td>
    </tr>
</table>

¡Hola a todos!

Les dejo mi propuesta para el reto 2:

reto2.php

<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td><?php echo "$numero x $i:"; ?></td>
            <td><?php echo $numero * $i; ?></td>
        </tr>
    <?php endfor; ?>
    <?php
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }
    ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>

Mi código:

<?php
    $numero = $_POST['Numero'];
?>

<table border="1"> 
  
<?php for ($i = 0; $i <= 10; $i++): ?>
  <tr>
    <td><?php echo "$numero x $i:"; ?></td>
    <td><?php echo $numero * $i; ?></td>
  </tr>  
<?php endfor; ?>
  
<?php
  $factorial = 1;
    for ($f = $numero; $f >= 1; $f--)
    {
      $factorial *= $f;
    }
?>

<tr>
  <td><?php echo "$numero!"; ?></td>
  <td><?php echo $factorial; ?></td>
</tr>
  
</table>

Mi solución

<?php
    //imprime una fila con dos columnas (operación y resultado)
    function printRow($operation, $result) { 
        echo "<tr>";
        //columnn operacion
        echo "<td>";
        echo $operation;
        echo "</td>";
        //column result
        echo "<td>";
        echo $result;
        echo "</td>";

        echo "</tr>";
    }
    //funcion que calcula el factorial
    function factorial($number) {
        $factorial = 1;

        for ($i = $number; $i > 0; $i--) {
            $factorial *= $i;
        }

        return $factorial;
    }
    //imprime una tabla con la tabla de multiplicacion y el factorial
    function printMultiplicationAndFactorialTable($number) {
        echo "<table border=\"1\">";
            for ($i = 0; $i <= 10; $i++ ) {
                $operation = "$number x $i";
                $result = $number * $i;
                printRow($operation, $result);
            }
        //print factorial
        $operation = "$number!";
        $result = factorial($number);
        printRow($operation, $result);
        echo "</table>";
    }

    $numero = $_POST['Numero'];

    printMultiplicationAndFactorialTable($numero);
?>```

My solution:

<?php
    $numero = $_POST['Numero'];
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
?>

<table border="1">
    <?php for ($i = 0; $i <= 10; $i++):?>
        <tr>
            <td><?= "$numero x $i:" ?></td>
            <td><?= $numero * $i ?></td>
        </tr>
    <?php endfor; ?>

    <tr>
        <td><?="$numero!"?></td>
        <td><?=$factorial?></td>
    </tr>
</table>

My Solucion.
Clase FuntionsMath:

<?php
class FunctionsMath{
    
    /**
     * Mostrar la tabla de multiplicar.
     *
     * @param  integer  $numero, $indice
     * @return void
     */
    public function TablaDeMultiplicar($numero,$indice){
        echo "
            <td> $numero x $i: </td>
            <td> $numero * $i  </td>
        ";
    }

    /**
     * Mostrar el factorial de un número
     *
     * @param  integer  $numero
     * @return int
     */
    public function factorialDeEnterosPositivos($numero){
        if($numero == 0){
            return 1;   
        }else{
            return $n*factorialDeEnterosPositivos($n -1);
        }
    }

}

My aporte.

Codigo php

<?php
    $numero = $_POST['Numero'];

    function imprimirFactorial($numero){

        for ($i = 0; $i <= $numero-1; $i++){
            echo
            "<tr>".
                "<td> $numero x $i:</td>".
                "<td>". $numero * $i; "</td>".
            "</tr>";
        }    
    }

    function calcularFactorial($numero){
        $factorial = 1;

        for ($i = $numero; $i >= 1; $i--) {
            $factorial *= $i;
        }
        return $factorial;
    }
?>

<table>
    <?php
    imprimirFactorial($numero);
    $factorial = calcularFactorial($numero);
    ?>
    <tr>
        <td><?php echo "$numero!=>"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
</table>```

Este es mi aporte:

<?php

/**
 * Clase que realiza algunas funciones matemáticas, dentro de ellas: factorial y tabla de multiplicación
 */
class CalculosMatematicos
{
    
    function __construct($numero)
    {
        $this->factorial = 1;
        $this->numero = $numero;
    }

    public function calcularFactorial() {
        for ($f = $this->numero; $f >= 1; $f--) {
            $this->factorial *= $f;
        }
        return $this->factorial;
    }

    public function calcularTabla() {

        for ($i = 0; $i <= 10; $i++):
            echo "
            <tr>
                <td> $numero x $i: </td>
                <td> " . $this->numero * $i . "</td>
            </tr>";
        endfor; 
    }

}

?>

Les dejo mi ejercicio, como bien dice mchojrin lo más difícil es nombrar las cosas.
Acá el output: http://behar.io/platzi/good_practices/reto1.php

<style>
    td{
        border: 1px solid black;
        text-align: center;
    }
</style>
<table>
<?php
    $_BASE = 10;
    if (isset($_GET['numero'])) {
        $_BASE=$_GET['numero'];
    }
    $_ITERACIONES = 10;
    if (isset($_GET['iteraciones'])) {
        $_ITERACIONES=$_GET['iteraciones'];
    }    

    imprimirTabla($_BASE, $_ITERACIONES);
    imprimirNumero($_BASE."!",factorial($_BASE));

    function imprimirNumero($operacion,$resultado){
        echo "
         <tr>
             <td>$operacion</td>
             <td>$resultado</td>
         </tr>        
         ";

    }

    function imprimirTabla($base, $iteraciones){
        for ($factor=1; $factor <= $iteraciones; $factor++) { 
            imprimirNumero("$base x $factor:",$base*$factor);
        }      
    }

    function factorial($base){
        $factorial = 1;
        for ($i = $base; $i >= 1; $i--) {
            $factorial *= $i;
        }
        return $factorial;
    }     
?>

<table>

Les comparto el código de mi ejercicio;

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
    <tr>
        <td colspan="2">MULTIPLICACION</td>
    </tr>
    <?php tablaMultiplicar($numero); ?>
    <tr>
        <td colspan="2">FACTORIAL</td>
    </tr>
    <?php factorial($numero); ?>
</table>

<?php 
function tablaMultiplicar($numero){ 
    for ($i = 0; $i <= 10; $i++){
        $resultado=$numero * $i;
        imprimirMultiplicacion($numero,$i,$resultado);
    }
}
?>

<?php 
function factorial($numero){ 
    $factorial = 1;

    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    imprimirFactorial($numero,$factorial);
}
?>

<?php function imprimirMultiplicacion($multiplicando,$multiplicador,$resultado){ ?>
    <tr>
        <td><?php echo "$multiplicando x $multiplicador:"; ?></td>
        <td><?php echo $resultado; ?></td>
    </tr>
<?php } ?>

<?php function imprimirFactorial($numero,$factorial){ ?>
    <tr>
        <td><?php echo "$numero!"; ?></td>
        <td><?php echo $factorial; ?></td>
    </tr>
<?php } ?>
<?php
    $numero = $_POST['Numero'];
?>

<table border="1">
    <!-- TABLA DE MULTIPLICACIONES DEL NUMERO DADO -->
    <?php for ($i = 0; $i <= 10; $i++): ?>
        <tr>
            <td>
                <?php echo "$numero x $i:"; ?>
            </td>
            <td>
                <?php echo $numero * $i; ?>
            </td>
        </tr>
    <?php endfor; ?>

    <!-- FACTORIAL DEL NUMERO -->
    <tr>
        <td>
            <?php echo "$numero!"; ?>
        </td>
        <td>
            <?php echo factorialDe($numero); ?>
        </td>
    </tr>
</table>

<?php
    function factorialDe($numero){
        $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }
?>

Mi solución al reto!

<?php
    $numero = recibirPost($_POST['Numero']);

    $resultadoMultiplicar = calcularTablaMultiplicar($numero);

    $factorial = calcularFactorial($numero);

    echo "<table border='1'>";

    imprimirTablaMultiplicar($numero, $resultadoMultiplicar);

    imprimirFactorial($numero, $factorial);

    echo "</table>";

    function recibirPost () : int {
	if( isset($_POST) ) {
        	$numero = $_POST['Numero'];
	} else {
		$numero = 5;
	}
        return $numero;
    }

    function calcularTablaMultiplicar ( $numero ): array {

        for ($i = 0; $i <= 10; $i++) {
            $resultado[$i] = $numero * $i;
        }

        return $resultado;
    }

    function imprimirTablaMultiplicar ( $numero, $resultado ) {
        for ($i = 0; $i < count($resultado); $i++) {
            echo "<tr>";
                echo "<td>$numero x $i:</td>";
                echo "<td>".$resultado[$i]."</td>";
            echo "</tr>";
        }
    }

    function calcularFactorial ($numero) : int{
         $factorial = 1;

        for ($f = $numero; $f >= 1; $f--) {
            $factorial *= $f;
        }

        return $factorial;
    }

    function imprimirFactorial( $numero, $factorial ) {
        echo "<tr>";
        echo "<td>$numero</td>";
        echo "<td>$factorial</td>";
        echo "</tr>";
    }
?>

import PT_MCF_MAIL:*;

Declare Function assign_auto_number PeopleCode FUNCLIB_AUTONUM.LAST_AUTO_NBR FieldFormula;
Declare Function obtenerCorreo PeopleCode CK_UTILIDAD_WRK.OPRID FieldFormula;
Declare Function generarConsecutivoSolPend PeopleCode CK_UTILIDAD_WRK.OPRID FieldFormula;

Function CreaSolicitudCredito(&Msg_Input As Message) Returns string

&solCredito = &Msg_Input.GetRowset().GetRow(1).GetRecord(Record.CK_SOLCRE_REQ);

&businessUnit = &solCredito.BUSINESS_UNIT.VALUE;
&custid = &solCredito.CUST_ID.VALUE;
&monto = &solCredito.CR_LIMIT.VALUE;
&solicitante = &solCredito.OPRID.VALUE;

/Se obtiene SETID/
&SETID = GetSetId(Field.BUSINESS_UNIT, &businessUnit, Record.CK_SETID_BU_VW, “”);

/Se obtiene consecutivo de temporal/
&solicitud = generarConsecutivoSolPend();

/Se inserta en la tabla temporal de solicitudes/
&REC1 = CreateRecord(Record.CK_SOLCRE_TMP);
&REC1.BUSINESS_UNIT.Value = &businessUnit;
&REC1.CK_NUM_SOLICITUD.Value = &solicitud;
&REC1.SETID.Value = &SETID;
&REC1.CUST_ID.Value = &custid;
&REC1.CR_LIMIT.Value = &monto;
&REC1.CK_ESTADO_SOLCRE.Value = “P”;
&REC1.DATE_ADDED.Value = %Date;
&REC1.OPRID.Value = &solicitante;
&REC1.DATETIME_CREATE.Value = %Datetime;
&REC1.OPRID_APPROVED_BY.Value = " ";
&REC1.Insert();

/Obtiene correo solicitante/
&correo = obtenerCorreo(&solicitante);

/Arma correo/
Local PT_MCF_MAIL:MCFOutboundEmail &email = create PT_MCF_MAIL:MCFOutboundEmail();

&email.From = "[email protected]";
&email.Recipients = &correo;
&email.Subject = “Solicitud de Credito temporal " | &solicitud | " para diligenciar”;
&tableBody = “”;

/Arma tabla que va dentro del correo/
&string = GetHTMLText(HTML.CK_HTML, &businessUnit, &custid, &monto);
&tableBody = &tableBody | Char(13) | &string;

/Crea y arma el record de busqueda del componente para crear la url/
&REC = CreateRecord(Record.CK_SOLCRE_TMP);
&REC.BUSINESS_UNIT.Value = &businessUnit;
&REC.CK_NUM_SOLICITUD.Value = &solicitud;

/Se arma URL/
&MyCompURL = GenerateComponentContentURL(“EMPLOYEE”, “ERP”, MenuName.CK_SOLCRE_TMP, “GBL”, Component.CK_SOLCRE_TMP, Page.CK_SOLCRE_TMP, “U”, &REC);

/Se convierte url a string/
&var = String(&MyCompURL);
/Se sustituyen varios string porque al generarse desde fuera de peoplesoft quedan apuntando a direccion erronea
para produccion se debe probar para saber cuales toca cambiar
/
If %DbName = “CKPRE” Then
&var = Substitute(&var, “myserver”, “10.181.0.123:8095”);
&var = Substitute(&var, “/ps/”, “/CKPRE_3/”);
Else
If %DbName = “CKPR” Then
/falta parametrizar para producion/
&var = Substitute(&var, “myserver”, “https://wsrv.coldecom.com”);
&var = Substitute(&var, “/ps/”, “/PROD_2/”);
End-If;
End-If;

&table = GetHTMLText(HTML.CK_HTML2, &tableBody, &var);
&email.Text = &table;
&email.ContentType = “text/html”;

Local integer &res = &email.Send();
Local boolean &done;

Evaluate &resp
When %ObEmail_Delivered
/* every thing ok */
&done = True;
Break;

When %ObEmail_NotDelivered
/*-- Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses */
&done = False;
Break;

When %ObEmail_PartiallyDelivered
/* Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses; */
&done = True;
Break;

When %ObEmail_FailedBeforeSending
/* Get the Message Set Number, message number;
Or just get the formatted messages from &email.ErrorDescription,
&email.ErrorDetails;*/

  &done = False;
  Break;

End-Evaluate;
Return &solicitud;
End-Function;

Function CreaSolicitudCredito_2(&Msg_Input As Message) Returns string

&solCredito = &Msg_Input.GetRowset().GetRow(1).GetRecord(Record.CK_SOLCRE_REQ);

&businessUnit = &solCredito.BUSINESS_UNIT.VALUE;
&custid = &solCredito.CUST_ID.VALUE;
&monto = &solCredito.CR_LIMIT.VALUE;
&solicitante = &solCredito.OPRID.VALUE;

/Se obtiene SETID/
&SETID = GetSetId(Field.BUSINESS_UNIT, &businessUnit, Record.AUTO_NUM_TBL, “”);

/Se obtiene consecutivo/
assign_auto_number(&SETID, “”, “CK_SOLCRE_TBL”, “NEXT”, “CKSC”, “Y”, &solicitud);

/*Se inserta en la tabla PS_CK_SOCRFILE_TBL */
&REC0 = CreateRecord(Record.CK_SOCRFILE_TBL);
&REC0.BUSINESS_UNIT.Value = &businessUnit;
&REC0.CK_NUM_SOLICITUD.Value = &solicitud;
&REC0.CK_IDDOC_FLD.Value = 1;
&REC0.Insert();

/Se inserta en la tabla/
&REC1 = CreateRecord(Record.CK_SOLCRE_TBL);
&REC1.BUSINESS_UNIT.Value = &businessUnit;
&REC1.CK_NUM_SOLICITUD.Value = &solicitud;
&REC1.SETID.Value = &SETID;
&REC1.CUST_ID.Value = &custid;
&REC1.CR_LIMIT.Value = &monto;
&REC1.CK_ESTADO_SOLCRE.Value = “P”;
&REC1.DATE_ADDED.Value = %Date;
&REC1.OPRID.Value = &solicitante;
&REC1.DATETIME_CREATE.Value = %Datetime;
&REC1.OPRID_APPROVED_BY.Value = " ";
&REC1.Insert();

/Obtiene correo solicitante/
&correo = obtenerCorreo(&solicitante);

/Arma correo/
Local PT_MCF_MAIL:MCFOutboundEmail &email = create PT_MCF_MAIL:MCFOutboundEmail();

&email.From = "[email protected]";
&email.Recipients = &correo;
&email.Subject = “Solicitud de Credito " | &solicitud | " para diligenciar”;
&tableBody = “”;

/Arma tabla que va dentro del correo/
&string = GetHTMLText(HTML.CK_HTML, &businessUnit, &custid, &monto, &solicitud);
&tableBody = &tableBody | Char(13) | &string;

/Crea y arma el record de busqueda del compoente para crear la url/
&REC = CreateRecord(Record.CK_SOLCREOPR_VW);
&REC.BUSINESS_UNIT.Value = &businessUnit;
&REC.CK_NUM_SOLICITUD.Value = &solicitud;

/Se arma URL/
&MyCompURL = GenerateComponentContentURL(“EMPLOYEE”, “ERP”, MenuName.MAINTAIN_CUSTOMERS, “GBL”, Component.CK_SOLCUPCRE_GBL, Page.CK_SOLCRE_CUP, “U”, &REC);

/Se convierte url a string/
&var = String(&MyCompURL);
/Se sustituyen varios string porque al generarse desde fuera de peoplesoft quedan apuntando a direccion erronea
para produccion se debe probar para saber cuales toca cambiar
/
If %DbName = “CKPRE” Then
&var = Substitute(&var, “myserver”, “10.181.0.123:8095”);
&var = Substitute(&var, “/ps/”, “/CKPRE_3/”);
Else
If %DbName = “CKPRE” Then
/falta parametrizar para producion/
End-If;
End-If;

&table = GetHTMLText(HTML.CK_HTML2, &tableBody, &var);
&email.Text = &table;
&email.ContentType = “text/html”;

Local integer &res = &email.Send();
Local boolean &done;

Evaluate &resp
When %ObEmail_Delivered
/* every thing ok */
&done = True;
Break;

When %ObEmail_NotDelivered
/*-- Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses */
&done = False;
Break;

When %ObEmail_PartiallyDelivered
/* Check &email.InvalidAddresses, &email.ValidSentAddresses
and &email.ValidUnsentAddresses; */
&done = True;
Break;

When %ObEmail_FailedBeforeSending
/* Get the Message Set Number, message number;
Or just get the formatted messages from &email.ErrorDescription,
&email.ErrorDetails;*/

  &done = False;
  Break;

End-Evaluate;

Return &solicitud;
End-Function;

El código:

<?php
    $numero = $_POST['Numero'];
?>
<table border="1">
<?php
for ($i = 0; $i <= 10; $i++):
?>
<tr>
    <td>
    <?php echo "$numero x $i:"; ?>
    </td>
    <td>
    <?php echo $numero * $i; ?>
    </td>
</tr>
<?php endfor; ?>
<tr>
    <td>
    <?php echo "$numero!"; ?>
    </td>
    <td>
    <?php echo FactorialDe($numero); ?>
    </td>
</tr>
</table>

<?php
function FactorialDe ($numero){
    
    $factorial = 1;
    for ($f = $numero; $f >= 1; $f--) {
        $factorial *= $f;
    }
    return $factorial;

}
?>```