我对函数和数组如何协同工作的理解略有差距
我有这个函数从一个名为submittedlogin的表单中获取登录信息,然后执行一个简单的查询并获取数组,如果是,但只有当值不为空时才返回错误,如果有(截断那部分)
function check_login($dbc, $email = '', $pass = '') {
$q = "SELECT user_id, user_type, first_name, time_zone FROM users WHERE email='$e' AND pass=SHA1('$p')";
然后在实际登录页面上,我使用发布值
调用该函数if (isset($_POST['submittedlogin'])) {
require_once ('includes/login_functions.inc.php');
require_once ('../mysqli_connect.php');
list ($check, $data) = check_login($dbc, $_POST['email'], $_POST['pass']);
if ($check) { // OK!
// Set the session data:.
session_start();
$_SESSION['user_id'] = $data['user_id'];
$_SESSION['first_name'] = $data['first_name'];
// Get priviledges
$_SESSION['user_type'] = $data['user_type'];
// Store the HTTP_USER_AGENT:
$_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']);
//
请注意,$_SESSION['user_type'] = $data['user_type'];
确实会返回正确的值。
我的问题是这里的语法是如何工作的? :
list ($check, $data) = check_login($dbc, $_POST['email'], $_POST['pass']);
更好的措辞可能是,如何定义$ check和$ data变量?作用:
$ check = check_login($ dbc)和 $ data = $ q ??
非常感谢澄清。
答案 0 :(得分:2)
list($val1, $val2) = array('val1', 'val2');
现在$val1
为'val1';
而$val2
为'val2'
list($val1, $val2) = array('val1', 'val2', 'val3', 'val4');
我们从数组中获得了2个第一个值(没有更改为$ val1和$ val2)。
所以,如果你做了类似
的事情$sql = 'SELECT if(md5(\''.$Password.'\') = password,1,0), username, email FROM users WHERE username = \''.$username.'\'';
$res = mysql_query($sql, $connection);
list($isAuthorized, $username, $email) = mysql_fetch_array($res);
您将获得mysql_fetch_array
返回的3个元素数组,并将其传递给$isAuthorized
,$username
和$email
变量。
答案 1 :(得分:1)
我不确定你可以使用函数返回的列表技巧,但我可能会弄错...无论如何,你都需要从函数返回一个数组。你给列表的变量是等式右边的数组元素,所以:
list($check, $data) = array('one', 'two');
echo $check; // outputs one
echo $data; // outputs two
答案 2 :(得分:1)
函数check_login
返回如下数组:
array('user', 'type', 'first', 'time');
和
list ($check, $data) = array('user', 'type', 'first', 'time');
$check
和$data
等于数组中的前两个值
答案 3 :(得分:1)
这意味着函数check_login()
返回一个具有两个值的数组
并且每个都将分配给list()
让你从check_login()得到返回值是
array('yes','hello');
并使用list ($check, $data) = check_login($dbc, $_POST['email'], $_POST['pass']);
装置
$check = 'yes';
$data =''hello';