我遇到了函数内部变量的麻烦,并且能够在index.php中读取它们。假设我有这个函数(functions.php):
function firstFunction(){
$id = '1234';
secondFunction($id);
}
function secondFunction($idnumber){
if( $idnumber = 1234 ){
$name = "James"; //should say "james".
}
并且在index.php中有类似的东西:
include(functions.php)
<?php
firstFunction();
echo $name;
?>
有没有人知道这样做的可能方法?我需要能够从另一个函数中的函数内部读取变量。
当调用函数内部的函数时,允许它从第一个函数中读取变量。
感谢。
答案 0 :(得分:5)
在函数内部创建的变量是本地的变量,你不能在它之外读取它们的内容(因为在函数运行完毕后所有的函数局部变量都会被删除)。
不正确的方法是在第二个函数中使$name
变量全局化。
更好的方法是使用函数返回值:secondFunction
返回$name
,firstFunction
返回调用secondFunction($id)
得到的任何内容。
哦,顺便说一下,你的secondFunction
还有另一个逻辑错误:你的if
测试不会像你想要的那样,因为你使用的是一个变量值赋值运算符({{1 }})而不是比较(=
)总是成功返回指定的值,其值为&#34; true&#34;大多数(但不是全部)案件的价值。
答案 1 :(得分:0)
您无法调用变量,因为它超出了您需要做的范围,如下所示
function firstFunction(){
$id = '1234';
return secondFunction($id);
}
function secondFunction($idnumber){
if( $idnumber == 1234 ){
return "James";
}
}
然后在索引中执行此操作
<?php
include(functions.php);
echo firstFunction();
?>
超出范围的变量无法访问,例如,如果在if语句中定义了变量,则只能在该语句中使用该变量,并且它与内部的函数和变量相同。以为我需要更多地解释我的答案。
答案 2 :(得分:0)
这是非常糟糕的做法 - 使用全局变量。你需要的答案是:
global $name;
你需要将它放在行上方:
$name = "James"; //should say "james".
答案 3 :(得分:0)
你在第二个函数中声明了$ name,所以它只存在于那里(就是它&#34;&#34; Scope&#34;)。 要使用它的值,您需要使用函数来返回它:
function secondFunction($idnumber){
if ( $idnumber == 1234 ){
$name = "James"; //should say "james".
}
else {
$name = "";
}
return $name;
}
function firstFunction(){
$id = 1234;
return secondFunction($id);
}
并且在index.php中有类似的东西:
<?php
include 'functions.php';
$name = firstFunction();
echo $name;
?>
答案 4 :(得分:0)
试试这个......
<?php
// Includes
include("functions.php");
// Create a variable to store the output of your function
$returned_name = firstFunction();
// Echo the variable
echo "Name: " . $returned_name;
?>
<?php
// Function 1
function firstFunction() {
$id = "1234";
return secondFunction($id);
}
// Function 2
function secondFunction($idnumber) {
if ($idnumber == "1234") {
$name = "James";
} else if ($idnumber == "5678") {
$name = "Brian";
}
return $name;
}
?>