簡體   English   中英

Codeigniter中的數組到字符串的轉換錯誤

[英]Array to string conversion error in Codeigniter

我試圖顯示從數據庫到視圖的平均結果,但我不斷收到此錯誤:

遇到PHP錯誤

嚴重程度:注意

消息:數組到字符串的轉換

文件名:views / resultview.php

行號:38

這是來自控制器的代碼:

$average['avg'] = $this->quiz->getAverage($quizid);

$this->load->view('resultview',array('quiz' => $quiz,
                                     'score' => $score, 
                                     'average_score' => $average));

該模型的功能如下:

   function getAverage($quiz) 
    {
    //get percentage from the database 

    $this->db->select_avg('score');
    $this->db->where('id', $quiz);
    $res = $this->db->get('userScoreQuiz');

    if ($res->num_rows() != 1) {
        // there should only be one row - anything else is an error
        return false;
    }
    return $res->result_array();
}

從視圖來看,代碼是:

<h4> Avg. score on all previous attempts: <?php echo $average_score['avg'] ?>   %</h4> 

我無法找出原因。

謝謝您的幫助。

function getAverage($quiz) 
{
    //get percentage from the database 

    $this->db->select_avg('score');
    $this->db->where('id', $quiz);
    $res = $this->db->get('userScoreQuiz');

    if ($res->num_rows() != 1) {
        // there should only be one row - anything else is an error
        return false;
    }
    return $res->row()->score;
}

來自docs

$this->db->select_avg('age');
$query = $this->db->get('members'); // Produces: SELECT AVG(age) as age FROM members

您正在進行的代碼過多,這是一種優雅的解決方案:

function getAverage($quiz)
{
    //get percentage from the database
    $query = $this->db->select('AVG(score) as average_score')->from('userScoreQuiz')->where('id', $quiz)->get();
    return $query->row()->average_score;
}

給你看

$data['quiz']          = //fill this area
$data['average_score'] = $this->quiz->getAverage($quizid);
$data['score']         = //fill this area

$this->load->view('resultview', $data);

他們將以$quiz, $average_score, $score

更換

echo $average_score['avg'];

print_r($average_score['avg'];

因為不是一個變量,而是數組的集合

codeigniter result_array()以數組形式返回數據。 並且數組索引從0索引開始。

“ $ average_score ['avg']”這應該是未定義的索引。 如果您不想更改函數,請嘗試以$ average_score ['avg'] [0] ['score']訪問結果數組。

如果要避免額外的數組索引,則使用row()而不是result_array()返回結果。

暫無
暫無

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

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