2010-12-02 118 views
0

我有index.php和function.php。PHP:返回数组?

在的index.php我已经包括function.php

在index.php的IM主叫login("Bla","123");存在于function.php

在的index.php我有if (!empty($err)){ foreach(..) echo $err ... }

登录()应该返回一个名为$ err的数组(如果有错误,则返回$ err;),然后它应该在index.php中的foreach中回显出来..

但是不知何故,我无法让它工作。你不能这样做吗?我没有得到任何回报。

我在登录():

$err = array(); 
    $err[] = "Something went wrong"; 
     return $err; 
     exit(); 

这里有什么错?或者有其他解决方案来做到这一点?

+2

为什么``return`后`退出()?你能告诉我们整个`登录`功能吗? – Skilldrick 2010-12-02 20:59:15

+0

在index.php中代码的外观如何设置$ err? – 2010-12-02 21:00:13

+0

PS它确实有助于提供我们实际可以用来复制问题的代码。 – Hamish 2010-12-02 21:04:03

回答

3

return return return value of $err。它不会使全局变量$err可用。

尝试使用:

$err = login('Bla', '123'); 
1

更换exit()只是return;

function login() 
{ 
    //Blah 
    exit(); 
} 
login(); 

echo 'You shall never see this.'; 

这是你应该做的事情:

$errors = array(); 
function login($user,$pass) 
{ 
    global $errors; 
    if(empty($user) || empty($pass)) 
    { 
     $errors[] = "username/Password invalid"; 
    } 

    //More Checks 

    //at the end. 
    if(count($errors) == 0) /*no errors*/ 
    { 
     return true; 
    } 
} 

,然后在index.php

if(!login("user","pass")) 
{ 
    foreach($errors as $error) 
    { 
     echo $error . "<br />"; 
    } 
    exit(); 
} 

//Successful login 
0

我建议的变量范围读了: http://www.php.net/manual/en/language.variables.scope.php

根据你说你试图从一个范围返回一个变量,并使用相同的名称中使用它在另一个范围是什么,但没有明确设定。

function login() { 
    $var = 123; 
    return $var; 
} 

login(); // $var won't exist. 
$abc = login(); // To login() it is called $var 
// but here $abc has the same value as $var inside of login() because it was returned. 
// not because it has the same name. 
0

我已经添加了一个答案,但我想生病添加另一个描述OOP方式来做到这一点。

创建一个名为login.class.php文件并创建像这样

class Login 
{ 
    var $username,$password; 

    public function __cosntruct($username,$password) 
    { 
     $this->username = $username; 
     $this->password = $password; 
    } 

    //Checks 
    public function isValidUsername() 
    { 
     return strlen($this->username) > 8; 
    } 

    //..Etc 
} 

一类,那么你可以这样做:

$Login = new Login("Username","Password"); 

if(!$Login->isValidUsername()) 
{ 
    echo 'username invalid'; 
}