El código PHP INCLUDE deja un número cuando se hace ECHO a través de un valor $

CorePress2024-01-24  12

Este es un problema extraño que encontré que agrega un número (hasta ahora el número 1) al lugar donde van los datos incluidos y posiciona los datos incluidos anteriormente en el código. Inicialmente pensé que podría ser algún código en TEXT.php lo que estaba causando el problema, pero simplifiqué los dos archivos hasta que llegué a un punto en el que no tengo idea de qué está causando el problema. El siguiente código debería provocar el problema, a pesar de lo simple que es. Si bien puedo solucionar el problema, me gustaría entender por qué obtengo un número y los datos incluidos se mueven.

El código principal simplemente hace referencia a Text.php de tres maneras.

La primera forma es cómo normalmente incluyo archivos php. El segundo es con algo de texto antes del valor repetido que incluye texto, esto da como resultado que aparezca un número donde debería estar el texto y tEl texto que aparece anteriormente en el código. En tercer lugar está solo el valor repetido que incluye texto, esto da como resultado que aparezca un número donde debería estar el texto y nada de texto.

Todo lo que existe en Text.php es texto de muestra.

Sample Text

A continuación se muestra el código principal.

<?php
$Value = include 'Text.php';
include 'Text.php';
echo "<br>";
echo "Example: " .$Value;
echo "<br>";
echo $Value;
?>

El código principal da como resultado lo siguiente cuando se ve en un navegador;

Sample TextSample Text
Example: 1
1

En lugar de:

Sample Text
Example: Sample Text
Sample Text

Apreciaría que alguien que conozca el código mejor que yo pudiera explicarme por qué sucede esto de esta manera. Gracias por tu tiempo.

3

¿Qué es exactamente lo que te hace¿Crees que el resultado debería ser diferente?

- Nico Haase

26/03/2021 a las 22:26

2

¿Stackoverflow.com/questions/5086695/php-include-prints-1/… ¿ayuda?

- Nico Haase

26/03/2021 a las 22:27

Clasificaría mi programación PHP como nivel principiante, solo he tenido una clase y el resto de mis conocimientos se basansobre la codificación a medida que avanzo, en gran medida fue que no sabía nada mejor.

Trento

29/03/2021 a las 18:13



------------------------------------

La página del manual de PHP para incluir dice:

Inclusiones exitosas, a menos que el archivo incluido lo anule, devuelve 1

Eso explica de dónde viene el 1.

Para mayor claridad: incluir ejecuta el código en el archivo incluido. Si eso involucra un eco (o simplemente algún texto sin formato fuera de un bloque PHP), entonces lo repite, allí mismo. Eso explica por qué ves "Texto de muestra" dos veces consecutivas.

Lo que include no hace es guardar el resultado y devolvérselo a la persona que llama. ISi desea eso, en general, debe usar una función con un valor de retorno, en lugar de una inclusión.

Nota: Puede usar include con un archivo que tenga una declaración de retorno en línea (consulte el ejemplo n.° 5 en la página del manual) y funcionaría de la manera que lo intentó anteriormente, capturando el valor de retorno. Este es el escenario al que se alude en la sección "a menos que el archivo lo anule". comentario en la cita anterior. Pero eso no es lo que hace tu implementación actual de Text.php.



------------------------------------

La variable $Value es lo que devuelve la función de inclusión de php. Según la documentación de php, este fla función devuelve 1.

Referencia: https://www.php.net/manual/en/function.include.php

En el caso de su código y salida.

<?php
$Value = include 'Text.php';  // This line sets $Value to 1 as the include is successful.
include 'Text.php'; // This line echos the contents of Text.php
echo "<br>";
echo "Example: " .$Value; // Echos $Value, which is set to 1 on line 1
echo "<br>";
echo $Value; // Echos $Value again, which is set to 1 on line 1
?>

Sample TextSample Text  <--- The text being included.
Example: 1  <--- The value of $Value is one, from a successful include
1  <--- The value of $Value, from a successful include

1

Gracias, esto me ayudó a encontrar una respuesta a mi problema. Utilicé un enfoque diferente, pero esto me llevó por el camino correcto.

Trento

5 de abril de 2021 a las 23:12



------------------------------------

para obtener el resultado que desea

Sample Text
Example: Sample Text
Sample Text

debes escribir

<?php
$Value = file_get_contents('Text.php');//to get 'Sample Text' in Text.php file
//include 'Text.php';#you don't need to include it, since you get the content of it.
echo $Value."<br>";//Sample Text
echo "Example: " .$Value;//Example: Sample Text
echo "<br>";//Line Break
echo $Value;//Sample Text
?>

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare