2017-05-19 63 views
1

我是一種PHP和Codeigniter的新手。我想比較2個不同的數組(一個用字符串和一個用對象(stdClass)),並計算它們的相似值,來計算結果。是否有任何可能解決這個問題,比如轉換對象?爲字符串,反之亦然任何幫助將不勝感激PHP/Codeigniter比較對象(stdClass)和字符串數組array_intersect

這是一些代碼我現在所擁有的:

Result.php

$countcorrectuser = count(array_intersect($_SESSION['correctanswers'], $_SESSION['useranswers'])); 
$countcorrect = count($_SESSION['correctanswers']); 
$totalresult = $countcorrectuser/$countcorrect; 
$this->session->set_userdata('totalresult', $totalresult); 

Run.php

// $_SESSION['correctanswers'] 
$correctanswers = $this->Question_model->getAllAnswers(); 
$this->session->set_userdata('correctanswers', $correctanswers); 

// $_SESSION['useranswers'] When the next question submit button is pressed 
if(!isset($_SESSION['useranswers'])){ 
    $_SESSION['useranswers'] = array(); 
} 
    $_SESSION['useranswers'][] = $this->input->post('useranswer'); 

Question_model.php的var_dump的

function getAllAnswers(){ 
    $query = $this->db->query('SELECT answer FROM question WHERE exam_id = \'' . $_SESSION['examid'] .'\''); 
    return $query->result(); 
} 

實施例($ _ SESSION [ 'correctanswers']);

array(4) { [0]=> object(stdClass)#25 (1) { ["answer"]=> string(6) "answer" } etc. 

var_dump($ _ SESSION ['usersanswers']);

array(4) { [0]=> string(6) "answer" etc. 

回答

2

爲了便於閱讀,代碼中的一些更改。它還使用Query Binding以提高可讀性和安全性。

查詢結果使用foreach循環來創建一個匹配$_SESSION['usersanswers']結構的數組。

function getAllAnswers() 
{ 
    $sql = 'SELECT answer FROM question WHERE exam_id = ?'; 
    $answers = $this->db->query($sql, [$_SESSION['examid']])->result(); 
    $results = [];//empty array so there is always something to return 
    foreach($answers as $answer){ 
     $results[] = $answer->answer; 
    } 
    return $results; 
} 
+0

感謝您的回覆。對象現在是數組,就像數組中的數組一樣。像這樣:array(4){[0] => array(1){[「answer」] => string(6)「answer」}等。有沒有辦法將數組中的數組轉換爲字符串一個數組?我得到這個錯誤:消息:數組到字符串的轉換 – user1992

+0

簽出我的修訂答案。 – DFriend

+0

非常感謝!現在正在工作。 – user1992