繁体   English   中英

无法使用PHP中的函数回显数组中的单个值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM