首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数数组定义?

函数数组定义?
EN

Stack Overflow用户
提问于 2011-04-19 12:53:28
回答 4查看 343关注 0票数 0

我对函数和数组如何协同工作的理解有一点差距

我有这个函数,它从一个名为submittedlogin的表单中获取登录信息,然后执行一个简单的查询,并在值不为空的情况下获取数组,如果值不为空,则返回错误(截断该部分)

代码语言:javascript
运行
复制
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')";

然后,在实际的登录页面上,我使用提交的值调用函数

代码语言:javascript
运行
复制
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??

如能澄清,我们将不胜感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-19 13:01:04

代码语言:javascript
运行
复制
list($val1, $val2) = array('val1', 'val2');

现在$val1'val1';$val2'val2'

代码语言:javascript
运行
复制
list($val1, $val2) = array('val1', 'val2', 'val3', 'val4');

我们从数组中得到了2个第一个值( $val1和$val2没有任何变化)。

所以,如果你做类似这样的事情

代码语言:javascript
运行
复制
$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变量。

票数 2
EN

Stack Overflow用户

发布于 2011-04-19 13:01:45

我不确定你是否可以将列表技巧与函数的返回一起使用,但我可能会弄错…无论如何,为了做到这一点,你需要从函数中返回一个数组。您提供给list的变量是等式右侧的数组元素,因此:

代码语言:javascript
运行
复制
list($check, $data) = array('one', 'two');
echo $check; // outputs one
echo $data; // outputs two
票数 1
EN

Stack Overflow用户

发布于 2011-04-19 13:03:28

函数check_login返回如下数组:

代码语言:javascript
运行
复制
array('user', 'type', 'first', 'time');

并通过

代码语言:javascript
运行
复制
list ($check, $data) =  array('user', 'type', 'first', 'time');

$check$data等于数组中的前两个值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5711746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档