簡體   English   中英

SQL數組顯示在沒有SQL查詢的行中

[英]SQL array display in rows without SQL query

我試圖測試一些我通常會從SQL數據庫中獲取的腳本但是為了離線測試我只是創建一個數組。

這就是我現在所擁有的;

$result = array
(
    array("name"=>"Toby", "q1"=>"1"),
    array("name"=>"Phelps", "q1"=>"1"),
    array("name"=>"Davies", "q1"=>"1"),
    array("name"=>"Keith", "q1"=>"1"),
);

$resultnum = count($result);
echo "<b>Question 1</b> <br/><br/>";
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $name = $row['name'];
        $answer = $row['q1'];

        $q1answer = 1;

        if($answer == $q1answer) {
            echo $name . " got this right! <br/>";
        } else {
            echo $name . " got this wrong! <br/>";
        }

    }
}

我怎樣才能使它像在SQL查詢而不是我的數組中獲取數組一樣工作,由於某些原因我找不到讓它運行的方法。

您可以將數組包裝在匿名類中 像這樣的單一用途是它們存在的主要原因。

$result = new class {
    private $data = array
    (
        array("name"=>"Toby", "q1"=>"1"),
        array("name"=>"Phelps", "q1"=>"1"),
        array("name"=>"Davies", "q1"=>"1"),
        array("name"=>"Keith", "q1"=>"1"),
    );
    private $data_index = 0;
    public $num_rows;

    public function __construct() {
        $this->num_rows = count($this->data);
    }

    public function fetch_assoc() {
        if (isset($this->data[$this->data_index])) {
            $index = $this->data_index++;
            return  $this->data[$index];
        }
    }
};

與之前的答案類似,我提出了一個課程。 在這里,我實際上將該類命名,並將數據傳遞給構造函數。 可以使用currentnext方法完成對數組的迭代:

class ResultSet {
    private $array = [];
    public $num_rows = 0;
    public function __construct($data) {
        $this->array = $data;
        $this->num_rows = count($this->array);
    }
    public function fetch_assoc() {
        $val = current($this->array);
        next($this->array);
        return $val;
    }
}

直到那里它將被修復。 您將使用以下數據:

$result = new ResultSet([
        ["name"=>"Toby",   "q1"=>"1"],
        ["name"=>"Phelps", "q1"=>"1"],
        ["name"=>"Davies", "q1"=>"1"],
        ["name"=>"Keith",  "q1"=>"1"],
    ]);

我沒有實現對count($result)支持,因為我不認為真正的mysqli結果集也支持。 你通過->num_rows獲得計數(就像你也一樣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM