php - 我如何使用 PHP 从 foreach 循环返回超过 1 个值

标签 php function

这是我的功能

function GetUser($id)
{
    global $pdo;
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));
    foreach($stmt as $name){
        $lname = $name['lname'];
        $lname = $name['fname'];
        $mi = $name['mi'];
    }

    return //what to put here?
}

这是我使用该函数的代码

include 'function.php';
$names = GetUser($_SESSION['id']);
//what's next?

如何从函数中检索 $lname、$fname 和 $mi?需要任何帮助和建议。谢谢:)

最佳答案

首先不要使用 global keyword ,但注入(inject)您需要的变量。第二,你为什么不返回一个数组?:

function getUser($pdo, $id)
{
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));

    $result = array();
    foreach($stmt as $name){
        $result['lname'] = $name['lname'];
        $result['fname'] = $name['fname'];
        $result['mi']  = $name['mi'];
    }

    return $result;
}

$result = getUser($pdo, 1);
var_dump($result);

请注意,这只会返回最后 结果。如果你想要这一切:

function getUser($pdo, $id)
{
    $stmt = $pdo->prepare('SELECT lname,fname,mi FROM user WHERE id = :id LIMIT 1');
    $stmt->execute(array(':id'=>$id));

    return $stmt->fetchAll();
}

$result = getUser($pdo, 1);
var_dump($result);

另请注意,我已让您的函数名称以普通字母而非大写字母开头。 “正常”命名约定是类以大写字母开头,但函数/方法以普通大写字母开头。

如果您想根据第一个解决方案检索信息,您会这样做:

echo $result['lname'];

如果您想根据第二种解决方案检索信息,您可以这样做:

echo $result[0]['lname'];

关于php - 我如何使用 PHP 从 foreach 循环返回超过 1 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12131031/

相关文章:

javascript - jQuery DataTables fnGetPosition 不是一个函数吗?

php - 谷歌分析和curl

php - php中如何区分选择查询和非选择查询

php - 多个 INSERT INTO 查询

php - 在 PHP 中确定 $x 是否可以被 $y 整除

javascript - 如何在 Javascript 中向文本区域添加多个值?

c - 使用函数的程序说明

PHP PDO 使用循环插入

javascript - 简单函数中的"Uncaught SyntaxError: Unexpected token ( "

解决 R 函数中的 nrow/length(list) 错误