当我尝试合并我的代码并将其提供给其他项目使用时,我遇到了一个问题: 将该例程移至函数时,不再生成和可用的变量: 这是查询:
$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,但这也不起作用。 我在做什么错了?
答案 0 :(得分:0)
存在多个错误或缺少步骤,例如return
或array
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
中的结果。