php - PHP 中的 Foreach 和数组

标签 php codeigniter

我对应该如何编写此函数感到非常困惑...它基本上可以通过测试,并且适用于一个用户的值(value)观。

假设我想要以下用户的值:$id = 2...这行得通!如果 $id = array(2,3,4,5) 它不起作用!

function get_score_a($id){
    // Case 4
    foreach($this->get_results_a($id,4)->row() as $key=>$a){
        if ($a >= 2 && $a <= 4) {
            $score_a += 2;
        } else if ($a > 4 && $a < 8) {
            $score_a += 3;
        } else if ($a > 8) {
            $score_a += floor($a - 8) * .5;
            $score_a += 3;
        }
    };

    return $score_a;
}


function get_results_a($id, $method) {
        $select_cols = array(
                            1 => array('a_1','a_2','a_4'),
                            2 => array('a_6','a_8','a_11','a_12','a_14'),
                            3 => array('a_3','a_10'),
                            4 => array('a_5','a_7','a_9','a_13')
                            );
        return $this->db->select($select_cols[$method])
                        ->where_in('id', $id)
                        ->get('be_survey');
    }

这会返回一个分数...但是,如果我运行多个 id...它只是将所有数字相加,我认为...

相反,我需要它来为各个用户输出单独的分数...

请注意,我是个菜鸟!非常感谢如此生动的解释。 :)

编辑 请检查我的代码...因为我应该更清楚!对不起! 我道歉! 总而言之,这会根据

从表中选择正确的值

是的,我的眼睛也疼! 编辑 我太仓促了!这是一个 Codeigniter 项目!

最佳答案

首先,数组没有 row().. 只需使用 foreach ($array as $key=>$value)
其次,在 foreach 循环中,$score_b 在每次运行时都会增加其先前的值。所以,您的代码正在输出所有玩家分数的总和。
使用:

foreach(array(5,5,5,6,7,78,8,7,7,6,5) as $key=>$a){
         if ($a >= 0 && $a <= .5) {
             $score_b[$key] += 0;
         } else if ($a > .5 && $a < 2) {
             $score_b[$key] += 1;
         }
     else if ($a > 2 && $a < 4) {
             $score_b[$key] += 2;
         }
           else if ($a > 4) {
          $score_b[$key] += floor($a - 8) * .5;
             $score_b[$key] += 2;
         }
     };

$score_b 现在将是一个分数数组。

编辑: 在您的代码中添加以下内容:

$id = array(2,3,4,5);
function get_score_array($ids) {
    foreach ($ids as $id) {
        $scores[$id] = get_score_a($id);
    }
    return $scores;
}

$scores 现在将是 $id=>$score 对的数组。
另外,根据你的框架(我猜你正在使用)调整上面的代码

关于php - PHP 中的 Foreach 和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4598676/

相关文章:

php - 将多个 MySQL 查询合并为 1

php - 获取属性中具有特定字符串的dom元素

php - 如何从另一个非命名空间类访问不同命名空间中的类

mysql - 使用 mysql join 显示不匹配值

php - 添加箭头以链接到子项

php - xdebug 中的配置参数,用于允许远程计算机上的多个主机

php - Nginx 的 fastcgi-php.conf 片段丢失

php - 如果数据长度可能超过 BLOB 大小,如何存储 CodeIgniter session 数据?

php - codeigniter在哪里创建和销毁mysql连接以及db类单例?

php - 将对不存在图像的请求重写到调整大小 Controller