【问题标题】:PHP/Codeigniter compare object(stdClass) and string array with array_intersectPHP/Codeigniter 将对象(stdClass)和字符串数组与 array_intersect 进行比较
【发布时间】:2017-05-19 14:09:32
【问题描述】:

我对 PHP 和 Codeigniter 有点陌生。

我正在尝试比较 2 个不同的数组(一个带有字符串,一个带有对象(stdClass),并计算它们的相似值,以计算结果。有没有可能解决这个问题,比如将对象转换为字符串或反之亦然?任何帮助将不胜感激。

这是我现在的一些代码:

结果.php

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

运行.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

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

var_dump($_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.

【问题讨论】:

    标签: php arrays codeigniter session


    【解决方案1】:

    您的代码中的一些更改是为了便于阅读。它还使用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;
    }
    

    【讨论】:

    • 感谢您的回复。对象现在是数组,就像数组中的数组一样。像这样: array(4) { [0]=> array(1) { ["answer"]=> string(6) "answer" } 等。有没有办法将数组中的数组转换为字符串一个数组?我收到此错误:消息:数组到字符串的转换
    • 查看我修改后的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多