函数内的PhP变量

时间:2014-08-09 23:16:33

标签: php function variables

我遇到了函数内部变量的麻烦,并且能够在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; 
?> 

有没有人知道这样做的可能方法?我需要能够从另一个函数中的函数内部读取变量。

当调用函数内部的函数时,允许它从第一个函数中读取变量。

感谢。

5 个答案:

答案 0 :(得分:5)

在函数内部创建的变量是本地的变量,你不能在它之外读取它们的内容(因为在函数运行完毕后所有的函数局部变量都会被删除)。

不正确的方法是在第二个函数中使$name变量全局化。

更好的方法是使用函数返回值:secondFunction返回$namefirstFunction返回调用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)

试试这个......

的index.php

<?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;
?>

的functions.php

<?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;
}
?>