我对函数和数组如何协同工作的理解有一点差距
我有这个函数,它从一个名为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??
如能澄清,我们将不胜感激。
发布于 2011-04-19 13:01:04
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变量。
发布于 2011-04-19 13:01:45
我不确定你是否可以将列表技巧与函数的返回一起使用,但我可能会弄错…无论如何,为了做到这一点,你需要从函数中返回一个数组。您提供给list的变量是等式右侧的数组元素,因此:
list($check, $data) = array('one', 'two');
echo $check; // outputs one
echo $data; // outputs two发布于 2011-04-19 13:03:28
函数check_login返回如下数组:
array('user', 'type', 'first', 'time');并通过
list ($check, $data) = array('user', 'type', 'first', 'time');$check和$data等于数组中的前两个值
https://stackoverflow.com/questions/5711746
复制相似问题