[英]Can't echo single value from array with a function in PHP
我在使用PHP时遇到问题,我使用MySQL查询的结果填充数组。
问题是当我创建一个函数来回显数组的某个元素时,它不起作用,因为没有函数就没有错误。
建立连接,执行查询,将结果存储在变量中:
require_once("db.php");
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT * FROM arlista";
$query_result = mysqli_query($conn, $query);
mysqli_close($conn);
$result_array = array();
我将查询结果传递给数组,然后我想查询数组中的单个值。 问题是如果我使用这样的函数, 这不起作用 。 我无法获取要在浏览器中显示的数组元素。
function arlista($attr, $rownum){
while($row = mysqli_fetch_array($query_result)){
$result_array[$i] = $row[$attr];
$i++;
}
echo $result_array[$rownum];
}
arlista("ar",1);
但是,如果我不使用函数, 这是有效的。 浏览器正在显示该值。
while($row = mysqli_fetch_array($query_result)){
$result_array[$i] = $row["ar"];
$i++;
}
echo $result_array[1];
有人可以解释这个功能出了什么问题,或者我该如何修复它? 谢谢!
服务器正在运行PHP 5.6.19
函数不会引入您未在函数内定义或传入的变量。由于您没有定义或传入$ query_result和$ result_array,因此脚本不起作用。 但是,如果没有该函数,则定义该变量,因此脚本将起作用。 要使函数工作,您需要做的就是传入变量$ query_result,$ result_array或在函数内定义它。
编辑:正如亚当所说,你可以在函数中定义将它用作全局变量:global $ query_result,$ result_array;
检查变量范围。 你的函数没有变量$query_result
。 打开错误报告也会提示您注意该问题。
使用全局可以工作:
function arlista($attr, $rownum){
global $query_result, $result_array;
while($row = mysqli_fetch_array($query_result)){
$result_array[$i] = $row[$attr];
$i++;
}
echo $result_array[$rownum];
}
arlista("ar",1);
希望有所帮助!
您需要将$query_result
作为参数传递给函数。 您还应初始化函数中使用的变量。 但是没有真正需要$i
变量,因为您可以使用[]
将新元素推送到数组中。
function arlista($attr, $rownum, $query_result){
$result_array = array();
while($row = mysqli_fetch_array($query_result)){
$result_array[] = $row[$attr];
}
echo $result_array[$rownum];
}
arlista("ar", 1, $query_result);
您也可以使用global $query_result
,但显式参数通常是更好的编程风格。
您需要将$query_result
作为函数参数传递,或者将其定义为函数中的全局变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.