簡體   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