如何从基于密钥数组的数据库中检索数据每个都有价值?

时间:2015-05-22 17:26:56

标签: php mysql codeigniter

我有一个像这样的数组

Array ( 
    [14] => 0.46902846738366
    [16] => 0.40289063077504
    [17] => 0.54903658244928 
) 

14,16,17与数据库中我的表的数组键ID相同。如何根据密钥数组(14,16,17)从数据库表中访问我的信息?

我们假设在表中存储了大量数据,但我只想获取id为14,16,17的数据。之后从id中选择我将执行数学运算以查找值这三个中最高的。?

3 个答案:

答案 0 :(得分:1)

$arry = array(14 => 0.46902846738366,16 => 0.40289063077504,17 =>0.54903658244928 );
$idarray=array_keys($arry);

"SELECT data FROM table WHERE id IN (".implode(',',$idarray).")";

答案 1 :(得分:1)

使用id获取行将此代码放入模型中(让我们称之为模型)

function get($ids) {
return $this->db->where_in('id', $ids)->order_by->('my_col_name')->get('storage')->result(); // or result_array();
}

并像这样称呼它

$data = $this->model->get(array_keys($zip_array));// or $this->model->get($array_a); from your last question

$ data中的数据将从最大值到低值排序,因此您自动获得最大值!只需要将my_col_name更改为列名

更新:当然你只能选择最大值,如果你愿意,可以将get()更改为

return $this->db->where_in('id', $ids)->select_max('my_col_name')->get('storage')->row();

答案 2 :(得分:0)

$myArray = array ( 
    '14' => 0.46902846738366,
    '16' => 0.40289063077504,
    '17' => 0.54903658244928,
) ;

$myArrayForQuery = implode(',',array_keys($myArray));

$myQuery = 'SELECt * FROM mytable where id in ( '.$myArrayForQuery.' );';