为什么通过函数包含的PHP会返回与主文件中的PHP不同的结果?

为什么通过函数包含的PHP会返回与主文件中的PHP不同的结果?,php,wordpress,function,for-loop,php-include,Php,Wordpress,Function,For Loop,Php Include,我试图在WordPress上运行一个循环,返回用户信息。当我使用PHP代码在与查询相同的文件中回显结果时,它会按预期工作。但是,如果我使用include访问其他地方保存的转换,它不会返回任何信息,即使包含的文件中的代码相同。为什么会这样 我的循环如下: <?php // The Query $user_query = new WP_User_Query( array( 'include' => array( 1, 2, 3 ) ) ); // User Loop if ( ! em

我试图在WordPress上运行一个循环,返回用户信息。当我使用PHP代码在与查询相同的文件中回显结果时,它会按预期工作。但是,如果我使用
include
访问其他地方保存的转换,它不会返回任何信息,即使包含的文件中的代码相同。为什么会这样

我的循环如下:

<?php

// The Query
$user_query = new WP_User_Query( array( 'include' => array( 1, 2, 3 ) ) );
// User Loop
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
?>

<?php transform('user_directory'); echo $user->display_name; ?>

<?php
    }
} else {
    echo 'No users found.';
}
?>
在这种情况下,
echo
命令起作用,而包含的文件(通过
Transform
)不起作用。所包含的文件肯定被找到了,并且完美地呈现了其他html和PHP代码,它似乎无法在
$user
下找到任何内容

包含在PHP文件中的代码是:

<?php echo $user->display_name; //Won't return this text
echo "It returns this text fine"; ?>

问题是,您正在从函数中包含它。
在PHP中,函数有自己的作用域。
包含的文件将继承函数的空范围。
您可以将
$user
传递给函数:

function transform($transformation, $user) {
    include 'transformations/'.$transformation.'.php';
}

...

<?php transform('user_directory', $user); echo $user->display_name; ?>
函数转换($transformation,$user){
包括“transformations/”.$transformation..php”;
}
...
这将设置
$user
变量,并使其可由包含的文件访问


希望这有帮助:-)

问题是,您正在从函数中包含它。 在PHP中,函数有自己的作用域。 包含的文件将继承函数的空范围。 您可以将
$user
传递给函数:

function transform($transformation, $user) {
    include 'transformations/'.$transformation.'.php';
}

...

<?php transform('user_directory', $user); echo $user->display_name; ?>
函数转换($transformation,$user){
包括“transformations/”.$transformation..php”;
}
...
这将设置
$user
变量,并使其可由包含的文件访问


希望这有帮助:-)

除非它是一个全局变量。尝试在不起作用的行上方添加一个
global$user
。正如Rneverse之前所说,您处于错误的上下文中。我建议您将error_reporting设置为E_ALL,并在开发时打开error reporting,这样您就可以很容易地看到此类错误。除非它是一个全局变量。尝试在不起作用的行上方添加一个
global$user
。正如Rneverse之前所说,您处于错误的上下文中。我建议您将error_reporting设置为E_ALL,并在开发时打开error reporting,这样您就可以很容易地看到这样的错误。谢谢!十年来第一次编程PHP,所以我有点生疏了。就这样,谢谢!十年来第一次编程PHP,所以我有点生疏了。