已将工作程序移至正常运行状态,现在不存在结果

时间:2018-10-09 06:28:50

标签: php function variables mysqli

当我尝试合并我的代码并将其提供给其他项目使用时,我遇到了一个问题: 将该例程移至函数时,不再生成和可用的变量: 这是查询:

$count = "SELECT eid, Count, Name, name2, Email, pay FROM h2018";

这很不错:

$result = $mysqli->query($count);
$row = $result->fetch_assoc();
foreach($row as $key=>$value){
    $a = $key;
    $$key = $value;
    echo($a." and ".$value."<BR>");
}

无法正常工作:

function avar($result) {
$row = $result->fetch_assoc();
    foreach($row as $key=>$value){
        $a = $key;
        $$key = $value;
    }
}


$result = $mysqli->query($count);
avar($result);
echo($a." and ".$value."<BR>");

我认为变量变量可以从函数外部获得。我尝试退货,但这没有帮助。我也尝试全局化$$ key,但这也不起作用。 我在做什么错了?

2 个答案:

答案 0 :(得分:0)

存在多个错误或缺少步骤,例如returnarray

function avar($result) {
$data=array();
$row = $result->fetch_assoc();
    foreach($row as $key=>$value){
        $a = $key;
        $data[$key] = $value;//if there is multiple records then used array otherwise you should used variable 
    }
return $data;
}


$result = $mysqli->query($count);
$data=avar($result);//get return value
print_r($data);

答案 1 :(得分:0)

请阅读有关Variable Scope的PHP文档,以获取更多信息。函数内部的变量是局部变量,因此您不能在函数外部访问它们。您将不得不退货。

例如,这可能有效:

function avar($result) {
    $resultArray = false;
    $row = $result->fetch_assoc();

    foreach ($row as $key => $value) {
        $resultArray = [
            'key' => $key,
            'value' => $value
        ];
    }

    return $resultArray;
}


$result = $mysqli->query($count);
$queryResult = avar($result);

if ($queryResult) {
    echo 'Key: ' . $queryResult['key'] . ' | Value: ' . $queryResult['value'];
}

请注意,如果有多个结果,fetch_assoc将返回包含多个项目的array。在我的示例中,将仅返回一个(也是最后一个)结果。

编辑:正如@Nigel Ren在评论中所说。在这种情况下,您基本上是在重建一个数组,该数组看起来(几乎)与fetch_assoc返回的数组相同,这毫无意义。如果您想在将来添加条件或处理某些数据,可以使用我的函数。否则,请勿使用函数,而仅使用fetch_assoc中的结果。