Php codeigniter获取mysql表,其中#u位于+;保留结果数组中键数组的顺序
我有一个带有图像ID的字符串(从另一个mysql表获取) 并转换为数组:Php codeigniter获取mysql表,其中#u位于+;保留结果数组中键数组的顺序,php,mysql,arrays,codeigniter,Php,Mysql,Arrays,Codeigniter,我有一个带有图像ID的字符串(从另一个mysql表获取) 并转换为数组: $idstring = "12, 18, 3, 392, 0, 9, 44"; $idarray = explode(',', $idstring); 基于这个id数组,我想从我的“media”mysql表中获取所有行 $result = $this->db->select('*') ->from('media') ->where_in('id', $ids) ->get()->res
$idstring = "12, 18, 3, 392, 0, 9, 44";
$idarray = explode(',', $idstring);
基于这个id数组,我想从我的“media”mysql表中获取所有行
$result = $this->db->select('*')
->from('media')
->where_in('id', $ids)
->get()->result_array();
问题是$result
数组的值的顺序很奇怪,如下所示:
$result's order : 44, 9 ,0 ,18 ,3 ,392 ,12 ...
但我需要它们保持我的$id字符串/数组顺序
到目前为止,我已经尝试了4种方法来解决这个问题:
where_in()
-这会创建大量查询-但目前有效$idstring
或$idarray
的顺序对$result
数组重新排序,尽管我无法找到工作结果,也不明白为什么需要执行此步骤ORDER\u BY
和FIND\u IN\u SET
,$ids
,但我无法将其放入我的一个工作的codeigniter查询中,并且不知道这是否真的有帮助Field()
函数
$result = $this->db->select('*')
->from('media')
->where_in('id', $ids)
->order_by("FIELD(id,".join(',',$ids).")")
->get()
->result_array()
应该是这样的
FIELD(id,12, 18, 3, 392, 0, 9, 44)
返回逗号分隔列表的索引位置
使用mysql的Field()
函数
$result = $this->db->select('*')
->from('media')
->where_in('id', $ids)
->order_by("FIELD(id,".join(',',$ids).")")
->get()
->result_array()
应该是这样的
FIELD(id,12, 18, 3, 392, 0, 9, 44)
返回逗号分隔列表的索引位置
可接受的答案应为M Khalid Junaid答案。但为了以防万一,如果您像我一样从数组生成,请按如下方式使用它:
$result's order : 44, 9 ,0 ,18 ,3 ,392 ,12 ...
$filters=[
“订购人”=>[
“title”=>“DESC”,
“”字段(id),“.join(',',$ids)。”=>“”//该选项应为空。。。
]
];
foreach($filters[“order_by”]作为$attribute=>$option){
$this->db->order\u by($attribute,$option);
}
输出将是:
。。。
按“名称”描述的订单,字段(id,2017、2031、2032、2034、2035)
限制50
为了澄清起见。接受的答案应该是M Khalid Junaid答案。但以防万一,如果您是从像我这样的数组生成的,请像这样使用它:
$result's order : 44, 9 ,0 ,18 ,3 ,392 ,12 ...
$filters=[
“订购人”=>[
“title”=>“DESC”,
“”字段(id),“.join(',',$ids)。”=>“”//该选项应为空。。。
]
];
foreach($filters[“order_by”]作为$attribute=>$option){
$this->db->order\u by($attribute,$option);
}
输出将是:
。。。
按“名称”描述的订单,字段(id,2017、2031、2032、2034、2035)
限制50
只是想澄清一下。
$idstring
可以用来代替加入(',',$idarray)
@PhilippMaurer我想如果你想使用$idstring
的话,这个字段(id,.$idstring.)“
会有用的,非常感谢philipp和m khalid junaid。我让它工作了,并且学到了一些新的东西。我的直觉是正确的-必须有一个简单的方法:)$idstring
可以用来代替加入(',',$idarray)
@PhilippMaurer我想这个“字段(id,.$idstring.””)“
如果你想使用$idstring
的话就可以了,非常感谢philipp和m khalid junaid。我让它工作了,并且学到了一些新的东西。我的直觉是正确的——必须有一个简单的方法:)