PHP:返回数组?
问题描述:
我有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();
这里有什么错?或者有其他解决方案来做到这一点?
答
return
return return value of $err
。它不会使全局变量$err
可用。
尝试使用:
$err = login('Bla', '123');
答
更换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
答
我建议的变量范围读了: 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.
答
我已经添加了一个答案,但我想生病添加另一个描述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';
}
为什么``return`后`退出()?你能告诉我们整个`登录`功能吗? – Skilldrick 2010-12-02 20:59:15
在index.php中代码的外观如何设置$ err? – 2010-12-02 21:00:13
PS它确实有助于提供我们实际可以用来复制问题的代码。 – Hamish 2010-12-02 21:04:03